bounceHammer has been EOL'ed on February 29, 2016

製品ライフサイクルの終了

2010年3月にオープンソースソフトウェアとして公開して以来、多くのユーザ様・企業様にダウンロードし、 ご利用いただきましたbounceHammerは、2016年2月29日(月)を持ちまして製品ライフサイクルの終了(EOL: End Of Life) となりました。長きにわたりbounceHammerをご使用いただき誠に有り難う御座いました。 開発元では後継となるバウンスメール解析ライブラリとして、より高精度で高速なSisimai(シシマイ) を二条項BSDライセンスで公開しています。

Sisimai
商用サポート

  • 1一式導入・設定・保守・開発の補助
  • 2独自MTA用解析モジュールの開発
  • 3個別案件の対応とメールサポート
  • 4バウンス管理・運用コンサルティング
  • 5スポット解析・解析済みデータ提供

telnetで宛先サーバの最大受信サイズを調べる

2011/01/20

宛先サーバの最大受信サイズを調べるには

添付ファイルを含む電子メールを送信した時に、サイズが大きすぎて宛先サーバから エラーで戻ってくる(バウンス)ことがあります。

特に業務で必要なファイルを送信する時には、予めどのくらいの大きさまでのメールが 送信できるのか分かっている方が合理的かもしれません。

この記事ではtelnetコマンドを使って宛先サーバが受信できる最大サイズを調べる方法を説明します。

digとtelnetで最大受信サイズを調べる

 

dig/宛先メールサーバのホスト名を調べる

例えば、hoge@example.jpからuser@example.com に送信するとします。

まずは、digコマンドかnslookupコマンドを使って、 user@example.jpのメールを受けとるメールサーバのホスト名を調べる必要があります。

$ dig MX example.com
...
;; ANSWER SECTION:
example.com. 3600 IN MX 10 mx.example.com.
...

IN MXという文字が書いてある行を探してください。 コマンドの実行結果からexample.comのメールサーバは mx.example.comという事が分かりました。

digコマンドがない場合はnslookupを使うとよいでしょう。 メールサーバのホスト名はmail exchanger =に続く文字列として表示されます。

$ nslookup -q=MX example.com
...
Non-authoritative answer:
example.com mail exchanger = 10 mx.example.com.
...

telnet/宛先メールサーバに接続する

user@example.jpのメールサーバはmx.example.jp と分かったので、ターミナルまたはコマンドプロンプトからtelnetコマンドを 使って接続します。

接続元の環境によっては OP25 (Outbound Port 25 Blocking) によって接続できない場合がありますのでご注意下さい。

$ telnet mx.example.com 25
Trying 192.0.2.1...
Connected to mx.example.com.
Escape character is '^]'.
220 Sendmail ESMTP 8.14.4/8.14.4; Sun, 12 Dec 2010 23:44:43 -0800
EHLO [192.0.2.2] ⏎ ←自分のIPアドレスを名乗る
250-mx.cubicroot.jp Hello [192.0.2.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE 33554432
250-DSN
250-ETRN
250-AUTH LOGIN PLAIN CRAM-MD5 DIGEST-MD5
250-DELIVERBY
250 HELP
QUIT

宛先メールサーバに接続してEHLOコマンドを発行した応答に含まれる SIZEに続く数値が、そのサーバが受け取れるメールの最大サイズです。 上記の応答では、約32MBということがわかります。

宛先メールサーバによっては、応答内容にSIZEが入っていないものもあります。 その場合は実際にメールを送ってみるしか確認のしようがありませんのでご注意下さい。

サイズを超過した場合の応答を確認する

相手先メールサーバは最大で32MBまでのメールを受けとるという事が、 EHLOコマンドの応答からわかりました。

では、32MB以上のメールを送信したら相手側メールサーバはどのような応答をするのか? これは実際に32MB以上の本文データを用意せずとも確認する方法があります。

$ telnet mx.example.com 25
Trying 192.0.2.1...
Connected to mx.example.com.
Escape character is '^]'.
220 Sendmail ESMTP 8.14.4/8.14.4; Sun, 12 Dec 2010 23:44:43 -0800
EHLO [192.0.2.2] ⏎ ←自分のIPアドレスを名乗る
250-mx.cubicroot.jp Hello [192.0.2.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE 33554432
250-DSN
250-ETRN
250-AUTH LOGIN PLAIN CRAM-MD5 DIGEST-MD5
250-DELIVERBY
250 HELP
MAIL FROM: <hoge@example.jp> SIZE=34567890
552 5.2.3 Message size exceeds fixed maximum message size (33554432)

MAIL FROMコマンドの末尾に送信するメールのサイズをSIZE= に続けて入力すると、メールサイズが大きすぎるという応答が恒久エラー (500系のエラーコード)で返ってきました。

このエラーでバウンスした場合、<span title = 'bounceHammer'><span class = 'bHa'>bounce</span><span class = 'bHz'>Hammer</span></span>はmesgtoobig(メールが大きすぎる) というエラーとして検出します。

携帯電話やWebメールサーバの最大受信サイズ

日本国内の携帯電話や著名なWebメールサービスのメールサーバは、 どのくらいのサイズのメールを受け付けるのか、各SMTPサーバに接続して調べてみました。 ここではEHLOコマンドの応答で返ってきた数値を列挙しています。

宛先のドメイン部分SIZE(EHLOの応答)大きさ
@docomo.ne.jp15,728,64015MB
@ezweb.ne.jp3,145,7283MB
@softbank.ne.jp20,971,52020MB
@i.softbank.jp (iPhone)1,048,5761MB
@gmail.com35,651,58434MB
@yahoo.com41,943,04040MB
@yahoo.co.jp31,457,28030MB
@hotmail.com36,909,87535MB
@me.com (MobileMe) 0 20MB

MobileMe(@me.com)のようにSIZEが0と応答してくる場合もありますが、 サービスの公式の最大値は 20MB と表記されています。

また、@docomo.ne.jpも応答は15MBですが、サービスの公式情報によると 5MB です。詳細は確認していませんが、どちらもSMTPのDATAコマンド以降に送信された 本文データの容量を測定し、超過した場合はSMTPセッション中にエラーを返しているのかもしれません。