▼各種メールサーバーのReceived: 形式▼

spam対策とかするときに必要、かも。(HELOの切り出しとか…)

$Id: received.html,v 1.12 2012-01-30 18:26:40+09 kabe Exp $


sendmail

sendmailの Received:フォーマットは sendmail.cf の HReceived: 項でいかようにでもいじくれますが、 暗号文のような設定を変えようという勇者は少ないのが現状。

MS Exchange や Postfix も基本的には同形式。

▽基本型

Received: from calsupply.com (dsl-gte-22243.linkline.com [64.30.193.51])
        by masamune.bio.is.tohoku.ac.jp (8.11.3/8.11.3) with ESMTP id gANMPL617002
	for <xxxx@dais.is.tohoku.ac.jp>; Sun, 24 Nov 2002 07:25:22 +0900 (JST)

from calsupply.com
SMTP HELO 部分。 "HELO calsupply.com"
(dsl-gte-22243.linkline.com
接続してきたクライアントの DNS PTR 逆索きと、
[64.30.193.51])
IPアドレス。

HELO は発信ホスト名を入れるのが習慣だが、 逆索きとの一致は要求されていない。違っているのは珍しくない。 (なお、外部から HELO localhost と言うのはspamwareくらい)

▽逆索きなし

Received: from mail.pbi.or.kr ([210.103.50.2])
        by masamune.bio.is.tohoku.ac.jp (8.11.3/8.11.3) with ESMTP id gBB6lKF19473
        for <xxxx@dais.is.tohoku.ac.jp>; Wed, 11 Dec 2002 15:47:22 +0900 (JST)

▽逆索き不一致

Received: from dns2.eldish.net (mail.sovemefa.org [200.62.10.14] (may be forged))
        by masamune.bio.is.tohoku.ac.jp (8.11.3/8.11.3) with ESMTP id gB3LqdZ14329
	for <xxxx@masamune.dais.is.tohoku.ac.jp>; Wed, 4 Dec 2002 06:52:39 +0900 (JST)

IPアドレスの逆索きと順索きが一致しないと (may be forged) が追加される。

▽identつき

Received: from chat.ru (CacheFlowServer@[194.224.131.4])
        by masamune.bio.is.tohoku.ac.jp (8.11.3/8.11.3) with ESMTP id g2DJLaG08716
        for <xxxx@dais.is.tohoku.ac.jp>; Thu, 14 Mar 2002 04:21:37 +0900 (JST)

Received: from tagebau.de (IDENT:squid@[203.197.216.92])
	by masamune.bio.is.tohoku.ac.jp (8.11.3/8.11.3) with SMTP id g4T65Wx01690;
	Wed, 29 May 2002 15:05:35 +0900 (JST)

identを索くようにしていると、ユーザー名がIPアドレスの頭につく。 普通の人が使うMTAで今時identを動かしていることは少ないので、 キャッシュ専用機やspamware/spamhausくらいでしか観測されない。 identの返り値により IDENT: がつく場合とつかない場合がある。


postfix

▽基本型

Received: from lithium-twonze.emv2.net (lithium-twonze.ccemails.com [81.92.114.210])
	by sha.sra-tohoku.jp (Postfix) with ESMTP id 3AB1FE33B6
	for <xxxx@sra-tohoku.co.jp>; Thu, 26 Jan 2012 03:49:32 +0900 (JST)

▽逆索き不一致もしくは無し

Received: from 00111.aaa2222.info (unknown [175.106.71.111])
	by sha.sra-tohoku.jp (Postfix) with SMTP id 75201E33D0
	for <xxxx@sra-tohoku.co.jp>; Tue, 24 Jan 2012 10:34:14 +0900 (JST)

Postfixの基本フォーマットは sendmail と同じだが、 逆索きなし、もしくは DNSの2度索きが一致しない(逆索き(PTR)の正索き(A)が一致しない)、 のどちらでも unknown をヘッダに記録する。 2度索き失敗時は /var/log/maillog のほうに warning が残る。

Jan 22 06:03:52 sha postfix/smtpd[12236]: warning: 120.89.29.3: hostname 3.29.89.120.ids.customers.eastern-tele.com verification failed: Host not found	逆索きはあるが、その正索きがない
Jan 22 06:07:48 sha postfix/smtpd[12346]: warning: 208.58.18.226: address not listed for hostname mail.eisenhardtmills.com	2度索きできたが、値が一致しない


qmail

▽標準形

Received: (qmail 23296 invoked from network); 13 Apr 2001 14:17:16 -0000
Received: from smtp1.mx.pitdc1.stargate.net (206.210.69.141)
  by dissolved.web.pitdc1.stargate.net with SMTP; 13 Apr 2001 14:17:16 -0000

qmailはなぜか Received を2行つける。UUCP時代なら批判されそうな仕様。

invoked from network
SMTPにて受信。 ローカルから起動されると invoked by uid nnn となる。
from smtp1.mx.pitdc1.stargate.net
クライアントの DNS PTR部分
(206.210.69.141)
クライアントIPアドレス部分

▽HELOとPTR不一致

Received: (qmail 24864 invoked from network); 21 Mar 2002 13:56:19 -0000
Received: from kenrob.lnk.telstra.net (HELO mx1.mail.yahoo.com) (139.130.148.131)
  by 211.167.251.92 with SMTP; 21 Mar 2002 13:56:19 -0000

HELOとDNS PTR逆索きが一致しないと、 (HELO heloval) が追加される。 qmail(とExim)では "Received: from" 直後のトークンは HELO ではなく PTR であるところに注意したい。

from kenrob.lnk.telstra.net
DNS PTR部分。
(HELO mx1.mail.yahoo.com)
HELO 部分。(詐称しようとしている)
(139.130.148.131)
実 IPアドレス部分。

▽逆索き失敗

Received: (qmail 13677 invoked from network); 11 Mar 2002 13:25:17 -0000
Received: from unknown (HELO mx1.mail.yahoo.com) (210.82.88.52)
  by mail.netcaching.com with SMTP; 11 Mar 2002 13:25:17 -0000

逆索き失敗か、最初から逆索きをしないよう設定されている 場合は PTR部には unknown と表示される。

▽ident

Received: (qmail 8363 invoked from network); 13 Dec 2002 03:51:01 -0000
Received: from rdurbin-host68.dsl.visi.com (HELO mailin-01.mx.aol.com) (squid@208.42.148.68)
  by cadeau.d-and-d.com with SMTP; 13 Dec 2002 03:51:01 -0000

Exim

Eximの Received: は (設定も可能なのだが)基本的にハードコードされていて バリエーションはそんなにない。(Debian付属のものはいじられているようだが…)
実はソースコードではPTRあり・なし、HELO一致・不一致、identあり・なしで8通りに 完全に場合わけされてしまっている。

▽基本型 (PTR あり、HELO一致)

Received: from nav34-cpt.mweb.co.za ([196.2.51.55])
	by smtp03.iafrica.com with esmtp (Exim 3.33 #1)
	id 187Wtc-0005vm-00
	for xxxx@dais.is.tohoku.ac.jp; Fri, 01 Nov 2002 10:11:12 +0200

ポート番号ログを有効にすると、IPアドレスの後に残せる。

Received: from wproxy.gmail.com ([64.233.184.192]:41162)
	by sesame.csx.cam.ac.uk with esmtp (Exim 4.44) id 1DTdt3-000BQP-CZ
	for exim-users@xxxxxxxx; Thu, 05 May 2005 11:47:24 +0100

▽PTRあり、HELO不一致

Received: from modem-1504.chameleon.dialup.pol.co.uk ([217.134.85.224] helo=gozna)
	by cmailg1.svr.pol.co.uk with smtp (Exim 3.35 #1)
	id 186TUy-0005KF-00; Tue, 29 Oct 2002 10:21:25 +0000

▽PTRなし、HELOあり

Received: from [193.188.12.17] (helo=yourdomain.net)
	by smtp1.adamcom.pl with esmtp (Exim 4.01)
	id 17ptQJ-0008Ky-00; Fri, 13 Sep 2002 18:36:04 +0200

ポート番号ログを有効にするとport=がつくこともある。

Received: from [64.233.166.182] (port=63363 helo=py-out-1112.google.com)
	by host.osflash.org with esmtp (Exim 4.52) id 1GESz6-0000F6-8T
	for osflash at osflash.org; Sat, 19 Aug 2006 11:43:45 -0400

▽ident

Received: from adsl-63-207-133-98.dsl.sndg02.pacbell.net
	([63.207.133.98] helo=mx1.mail.yahoo.com ident=squid)
	by phoenix.infradead.org with smtp (Exim 4.10)
	id 18BKHD-0000H1-00
	for xx@xx; Mon, 11 Nov 2002 19:31:16 +0000

確かに from の直後のトークンを採れば sendmailの $&{client_name} 相当になるのだが、 他のパラメーターを採集しようとするとちょっと工夫しないといけない。


InterMail

Received: from mail.cartimesup.com ([66.154.24.36]) by mta008.verizon.net
	  (InterMail vM.5.01.05.20 201-253-122-126-120-20021101) with SMTP
	  id <20021216064551.OWBN1481.mta008.verizon.net@mail.cartimesup.com>
	  for <xx@xx>;
	  Mon, 16 Dec 2002 00:45:51 -0600

一見 sendmail 形式なのだが、InterMail は逆索きをしない。 HELO と IPアドレスが残る。


SMTPD32

Received: from Vtznzs [65.30.75.23] by vscapeimail2.virtualscape.com
  (SMTPD32-7.13) id A525AF4013E; Tue, 10 Dec 2002 10:15:49 -0500

SMTPD32も逆索きはしない。 HELO と IPアドレスが残る。 IPアドレスは角カッコだけで丸カッコはつかない。


EMWAC

Received: from etsimo.uniovi.es (unverified [200.72.68.250]) by taxhouse.co.kr
 (EMWAC SMTPRS 0.83) with SMTP id <B0002190339@taxhouse.co.kr>;
 Fri, 11 Oct 2002 17:09:52 +0900

EMWACも sendmail 形式を踏襲するが逆索きはせず、 常に "unverified" を埋め込む。

フリーかつWinNTで動くMTAとしてはEMWACがポピュラーだったため、 一時期広く使われていたが、第三者中継が禁止できないため 外部に見えるところに置くのは厳禁。 SMTP受信部に細工をして中継禁止できるようにしたものは "(EMWAC ..)" の部分が "(SPA SMTP Receiver (1.20))" となる。


Microsoft Exchange

▽逆索き失敗

Received: from smtp0943.mail.yahoo.com ([203.42.125.226] RDNS failed) by credito-inmobiliario.com.mx with Microsoft SMTPSVC(5.0.2195.2966);
	 Mon, 29 Apr 2002 04:49:41 -0500

Exchangeは基本的に sendmail の文法を踏襲するが、 逆索き失敗時に "RDNS failed" をつける。(余計と言えば余計だ…)


CommuniGate Pro

CommuniGateは (マニュアルを見る限り)逆索きチェック時は HELO との照合も行い、一致しなかったら受信拒否という仕様になっているようで、 結果的に外部から見える CommuniGate サーバーは 逆索きチェックをしない設定になっているのが普通。

▽PTR確認 (ほぼ内部転送専用)

Received: from be01.comm.charter.net ([209.225.8.75] verified)
  by dc-mx01.cluster1.charter.net (CommuniGate Pro SMTP 3.5.9)
  with ESMTP id 20333961; Mon, 16 Dec 2002 23:37:51 -0500

▽PTR索かない

Received: from [200.67.69.157] (HELO mx1.mail.yahoo.com)
  by be01.comm.charter.net (CommuniGate Pro SMTP 3.5.9)
  with ESMTP id 75175984; Mon, 16 Dec 2002 22:33:30 -0500

逆索きがないことに注意。


Mercury

Received:3行。HELO と IPアドレスのみ。

Received: from Spooler by Queensbury SMTP (Mercury/32 v3.31) ID MO003D6B;
    17 Feb 03 06:51:13 -0500
Received: from spooler by queensbury.ca (Mercury/32 v3.31); 16 Feb 03 03:57:34 -0500
Received: from html (199.35.236.83) by Queensbury SMTP (Mercury/32 v3.31) ID MG003D68;
   16 Feb 03 03:57:31 -0500

Hamster

一見 qmail 風ではあるが微妙に違う。受取サーバーの IPアドレスも入っている。

ソースを見る限り、逆牽き失敗すると "from unknown" となるようだが 実例が見つからず不明。

▽HELO != PTR

Received: from patrick.lokal.netzadmin.org (HELO patrick) [192.168.0.1]
	by test.netzadmin.org (192.168.0.1) 
	with SMTP (Classic Hamster Version 1.3 Build 1.3.23.4) ; Wed, 26 Dec 2001 22:15:04 +0100

Received: from g12.gulfusa.com (HELO sra-tohoku.co.jp) [192.8.1.12]
	by BOECK.SYLT1 (192.8.1.12) 
	with ESMTP (Classic Hamster Version 2.0 Build 2.0.0.1) ; Tue, 30 Mar 2004 09:14:24 +0200

F-Secure Internet GateKeeper (fsigk)

F-Secure (fsigk, virusgwなど) のSMTPプロクシは HELO をどこにも残さない。逆索きはする。

Received: from external.link (172.25.0.163)
 by mailsv.intranet (F-Secure/fsigk_smtp/406/mailsv.intranet);
 Thu, 26 Jan 2012 11:47:12 +0900 (JST)
X-Virus-Status: clean(F-Secure/fsigk_smtp/406/mailsv.intranet)

HELOフィルタリング機能も無いので、rNATにしろなんにしろ 直結でインターネット側に出すのは色々と効率が悪そう。 なおこのヘッダは anonymous 設定で付加しないことも可能。


qpsmtpd

形式は常に一定で HELO は常に明記。 逆索きがない場合は unknown にならず、例のように [IPアドレス] が補完される。

Received: from [122.163.114.53] (HELO httpd.apache.org) (122.163.114.53)
    by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 07 Mar 2007 21:33:13 -0800

IdeaSmtpServer

home.pl/home.net.pl でしか使われていないメールサーバ。 独自開発?のわりに動作は比較的まとも。(sendmailが先祖?)

Received: from pool-71-243-226-48.tampfl.fios.verizon.net [71.243.226.48] (HELO User)
 by netpoczta.home.pl [212.85.96.51] with SMTP (IdeaSmtpServer v0.70)
 id 50727ac18eb95e01; Mon, 31 May 2010 07:20:36 +0200

IPアドレスの括りは[...] ではなく (...)になっている場合もあり。


脚注

なお HELO に ホスト名の無いドメイン名だけを入れるのは、現在では間違い。 ものすごく古い SMTP で TURN コマンドで逆配送を行う際の名残だが、 現在では巨大なセキュリティホールになるので使われておらず、 RFCからも削除されている。
したがってSMTPサーバで、特に自ドメインのみのHELOを 弾くのは効果絶大なのだが、 Netscape〜Mozilla 1.2あたりまでのメーラー、 秀丸メール(鶴亀)、 Active!Mail (Webメール) のSMTPエンジンは 古い仕様を引きずっている (深く考えずに実装した?) ので、 使う人がいるサイトでのフィルタ設定には注意。

かべ@sra-tohoku.co.jp