Helo command rejectedでメールが送信されないとき

おはこにゃばちにんこ。

先日とある案件でMXレコードもばっちりだしブラックリストにも入らないけど、
一部のメールクライアント(icloudとか)にメールが届かないという報告が挙がり調査したところ
/var/log/maillogに以下の怪しげな記載が

Helo command rejected: Host not found (in reply to RCPT TO command)

なにがHELOなんでしょうか。ググったらヘリコプターとか言われるし。
heloの意味・使い方 - 英和辞典 Weblio辞書

でもどうも「HOSTが見つかんねえ」と言ってる感じです。

で、真面目に調べた結果、割と単純な理由でした。

メール送信時に、送信先メールドメインによっては「HELO要求」というものをクライアントに出します。

そうするとクライアントは

「俺のドメインはこれだぜー!俺はここにいるぞー!!」

ってドメインを送るみたいなんですね。

受け手側はこの送られてきたドメインDNSのMXコードを照合して本当に受け取っていいメールかを判定するらしく。ここが合致しないと前述のエラーとなります。

この送信されるドメインなんですが下記で調べられます。

何も設定しないと$myhostnameが指定されているはずです。

[hogehoge@hikohiko ]$ postconf -v | grep helo_name
smtp_helo_name = $myhostname

[hogehoge@hikohiko ]$ sudo vi /etc/postfix/main.cf + smtpd_helo_required = plm_hikohiko.com [hogehoge@hikohiko ]$ sudo postfix reload [hogehoge@hikohiko ]$ postconf -v | grep helo_name smtp_helo_name = plm_hikohiko.com

main.cfに追記をsmtp_helo_nameを指定することで、HELOコマンド要求時に送信するドメインを明示することが可能となります。

もし特定ドメインに対してだけメール飛ばないなー、なんてことがあったら
この辺も怪しんでみてくださいな!