添付ファイルを含む電子メールを送信した時に、サイズが大きすぎて宛先サーバから エラーで戻ってくる(バウンス)ことがあります。 特に業務で必要なファイルを送信する時には、予めどのくらいの大きさまでのメールが 送信できるのか分かっている方が合理的かもしれません。 この文書では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セッション中にエラーを返しているのかもしれません。