Gmail、キャリア向けメール送信時に、Postfix 流量制限をする

Postfix 流量制限

docomo, au, softbank 等の携帯キャリア向けのメール、Gmailのメールなどは、大量のメールを送信されてると、「554:Transaction failed」等のエラーコードを応答してセッションを切断されます。その際に送信したメールは相手先のメールサーバーで拒否され一時的に受信をブロックされます。

参考URL:メール送受信する際の注意事項(docomo)

1.大量の宛先不明を含むメールは送信しないでください

インターネットを経由してiモード・spモード宛に送られる大量の宛先不明メールが原因で、一部設備が輻輳し、Eメールが届かない、もしくは遅延するといった恐れがあります。また、こうした大量の宛先不明メールが送信される理由に、迷惑メール送信者によるメールアドレスの収集・名簿化があり、結果、迷惑メールの増加につながることが考えられます。従いまして、弊社ではこのような大量の宛先不明メールの送信元ネットワークを一時的に受信ブロックすることがあります。

3.1通のメールで可能な同報数の上限にご注意ください

同時送信が可能な宛先数は1SMTPセッションあたり100宛先までとなります。101以上の宛先数で送信した場合はそのセッションのメールに関しては受信せずにエラーコード554:Transaction failedを応答し、そのセッションを切断させていただいております。エラーになる前の宛先に関しても送信されませんので、ご注意ください。

送信するメールの流量をPostfix側で制限すれば、上記の制限に対策ができるかと思いますので、Postfix側でメールの流量制限をおこないます

Postfixの設定変更

Postfixにメールの流量制限をおこなうための設定をおこないます。

「/etc/postfix/main.cf」の内容を以下に変更します

# main.cf の最終行に最終行に追加します
$ sudo vi /etc/postfix/main.cf

# Gmail, Docomo, au, softbank 流量制限

transport_maps = hash:/etc/postfix/transport

# その他の宛先メール 100通/60秒に制限
default_process_limit = 5000
anvil_rate_time_unit=60s
smtpd_client_message_rate_limit=100

「/etc/postfix/master.cf」の内容を以下に変更します

$ sudo vi /etc/postfix/master.cf

# Gmail
gmail-smtp unix -    -    n    -    1    smtp
  -o syslog_name=postfix/gmail
  -o smtp_destination_concurrency_limit=1
  -o smtp_destination_recipient_limit=1
  -o anvil_rate_time_unit=60s
  -o smtpd_client_message_rate_limit=100


# docomo
docomo-smtp unix -    -    n    -    1    smtp
    -o smtp_destination_concurrency_limit=1
    -o smtp_destination_recipient_limit=1
    -o anvil_rate_time_unit=60s
    -o smtpd_client_message_rate_limit=100

# au
au-smtp unix -    -    n    -    1    smtp
    -o smtp_destination_concurrency_limit=1
    -o smtp_destination_recipient_limit=1
    -o anvil_rate_time_unit=60s
    -o smtpd_client_message_rate_limit=100


# SoftBank
softbank-smtp unix -    -    n    -    1    smtp
    -o smtp_destination_concurrency_limit=1
    -o smtp_destination_recipient_limit=1
    -o anvil_rate_time_unit=60s
    -o smtpd_client_message_rate_limit=100

「/etc/postfix/transport」のファイルを以下のように変更

$ sudo vi /etc/postfix/transport


gmail.com       gmail-smtp:
docomo.ne.jp    docomo-stmp:
ezweb.ne.jp     au-smtp:
softbank.ne.jp  softbank-smtp:
.softbank.ne.jp softbank-smtp:
.vodafone.ne.jp softbank-smtp:

ハッシュ化をおこないます

$ sudo postmap /etc/postfix/transport

postfix を再起動して設定を反映します

$ sudo systemctl restart postfix