添付ファイルを含む電子メールを送信した時に、サイズが大きすぎて宛先サーバから エラーで戻ってくる(バウンス)ことがあります。 特に業務で必要なファイルを送信する時には、予めどのくらいの大きさまでのメールが 送信できるのか分かっている方が合理的かもしれません。 この文書ではtelnetコマンドを使って宛先サーバが受信できる最大サイズを調べる方法を説明します。
初出: bouncehammer.jp/ja/email-topics/how-much-the-max-size-of-email
例えば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. ...
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-libsisimai.org 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-libsisimai.org 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系のエラーコード)で返ってきました。このエラーでバウンスした場合、Sisimaiは mesgtoobig (メールが大きすぎる) というエラーとして検出します。
日本国内の携帯電話や著名なWebメールサービスのメールサーバは、 どのくらいのサイズのメールを受け付けるのか、各SMTPサーバに接続して調べてみました。 ここではEHLOコマンドの応答で返ってきた数値を列挙しています。
2017年5月調べ
宛先ドメイン | SIZE(EHLOの応答) | 応答 |
---|---|---|
@docomo.ne.jp | 15,728,640 | 15MB |
@ezweb.ne.jp | 3,145,728 | 3MB |
@softbank.ne.jp | 20,971,520 | 20MB |
@i.softbank.jp (iPhone) | 4,310,016 | 4MB |
@gmail.com | 157,286,400 | 150MB |
@yahoo.com | 41,943,040 | 40MB |
@yahoo.co.jp | 41,943,040 | 40MB |
@hotmail.com | 36,909,875 | 35MB |
@outlook.com | 36,909,875 | 35MB |
@me.com (iCloud) | 28,311,552 | 27MB |
@docomo.ne.jpも応答は15MBですが、サービスの公式情報によると5MBです。 詳細は確認していませんが、どちらもSMTPのDATAコマンド以降に送信された本文データの容量を測定し、 超過した場合はSMTPセッション中にエラーを返しているのかもしれません。