iCloudへの送信時エラー

iCloudのメールアドレスに送信時、特定の条件でエラーになってはまった件。

環境

  • 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.useMinimalUserAgentfalseに設定
  • general.useragent.overrideを新規追加して、値を空欄に設定

上記の設定で、送信メールからUser-Agentヘッダがなくなる。

general.useragent.overrideに値を設定すれば、その値がUser-Agentに設定される。Thundebirdから送信したことをUser-Agentに残したいのであれば、ここにThunderbirdとだけ設定すればよい。Mozillaの文字と組み合わさっていなければ、iCloud宛てでもエラーにならない。

タイトルとURLをコピーしました