iCloudのメールアドレスに送信時、特定の条件でエラーになってはまった件。
【追記】iCloud側の対応により、解決済み(2024年10月5日)
環境
- FreeBSD 14.1
- Postfix 3.9.0
現象
自サイトから@me.com
や@icloud.com
のアドレスに対してメール送信すると、iCloudのメールサーバから次のようにエラーが返される。
<xxxxx@icloud.com>: host mx02.mail.icloud.com[17.57.155.25] said: 554 5.7.1
[CS01] Message rejected due to local policy. Please visit
https://support.apple.com/en-us/HT204137 (in reply to end of DATA command)
上記メッセージ中に示されたURL「Postmaster information for iCloud Mail」を確認してみたが、拒否される理由がわからない。
- SPF → 設定済み
- DKIM署名 → ヘッダ中に署名があることを確認済み
- DMARC → 設定済み
- 各種ブラックリスト → 登録されていないことを確認
- オープンリレー → 禁止設定済み
ユーザーアカウントが乗っ取られた形跡もなし。当然、スパム発信の事実なし。
自サイト側に改善できる部分があると思えなかったので、上記ページにあったiCloud管理者宛てにメールで状況を説明してみた。すると、エラーが出たときのバウンスメールを送って欲しいとのこと。
何度か要請があり、その都度送っていたけれども、やがて音沙汰がなくなる。
やり取りしている中で、次の条件に当てはまるときにエラーとなるらしいことがわかってきた。
- Thunderbirdから送信
- タイトルなし
- 本文は英文のみ
同じメール内容でも、RoundcubeやMacのメールアプリから送信するとエラーにならない。
ヘッダーの違いを確認したところ、どうやらUser-Agentの有無しか差がない。ためしにThunderbirdからUser-Agentを削除してみたところ、エラーが出なくなった。
iCloudの運営からはその後も連絡がないので、この方法で対処することに。
【追記】さらに調べたところ、User-Agentの有無ではなく内容でエラーになっていることが判明。User-AgentにThunderbirdの文字列が含まれている場合にエラーとなる。順序は関係なく、他の文字列があっても関係ない。たとえば次のようにOutlookっぽい文字列に紛れ込ませてもエラーになった。
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; Tablet PC 2.0; Microsoft Outlook 16.0.5395; Microsoft Outlook 16.0.5395; Thunderbird)
とにかく、Thunderbirdが入ってるとダメ。Thunderbirdに何か恨みでもあるんですかね。
Gmailから送信しても、タイトルなし&UAにThunderbirdを含むメールは拒否された。ただし、アカウントによっては送信できたりする。
ThunderbirdのUser-Agent削除
Thunderbirdが送信するメールからUser-Agent
ヘッダを取り除くには、Thunderbirdの設定→設定エディターで次の設定をする。
mailnews.headers.useMinimalUserAgent
をfalse
に設定general.useragent.override
を新規追加して、値を空欄に設定
上記の設定で、送信メールからUser-Agent
ヘッダがなくなる。
general.useragent.override
に値を設定すれば、その値がUser-Agentに設定される。Thundebirdから送信したことをUser-Agentに残したいのであれば、ここにThunderbird
とだけ設定すればよい。Mozillaの文字と組み合わさっていなければ、iCloud宛てでもエラーにならない。