sendmailからのメール送信ができない問題をhostnameを変更せずになんとかする。
状況
lettreクレートを使ってrustでメールを送信する方法については以前書いた:

Rustで日本語を含むメールを送信する
Rustでメールを送信する。lettrelettreというメールクライアントも利用できるメーラーのクレートを利用して、日本語を含むメールを送信するときの注意点を書いておきたい。lettreについてはこちら(crates.io):日本語送信で...
しかし、環境によってはメールを送信するための準備が整い切れていない場面があるようなのでその1つを記録しておきたい。
lettreの手続きは問題ないのだが、この環境ではalmalinux9のsendmailを経由するのでそこで不備があるとエラーというか送信に失敗してしまう。そのときに確認できる失敗時のログは次のようなもの:
My unqualified host name (<hostname>) unknown; sleeping for retry
unable to qualify my own domain name (<hostname>) -- using short name
このログはjournalctlから確認した。
ホスト名からIPアドレスがわからない、つまりホスト名が解決できないような気がするメッセージ。
解決
解決できないなら解決できるようにすればいいじゃないということで解決のための設定をする。
/etc/hostsでホスト名をループバックアドレスとして解決するように記述する:
127.0.0.1 localhost <省略> <hostname>
127.0.0.1に先ほどの<hostname>を追記すればオーケー。
おわり
lettreのソースコードを見てみると、最初に接続するSMTPサーバはlocalhostなので、ローカルのSMTPサーバというかMTAのsendmailなどの設定が必要になるとわかる:
lettre/src/transport/smtp/mod.rs at 0c9fc6cb71650e49abc37540a48ffcbc2fe38ee4 · lettre/lettre
a mailer library for Rust. Contribute to lettre/lettre development by creating an account on GitHub.
sendmail自体は知らないことも多いので少しずつ知識を蓄えたいなと思う。
以上です。


