sendmail
からのメール送信ができない問題をhostname
を変更せずになんとかする。
状況
lettre
クレートを使ってrust
でメールを送信する方法については以前書いた:
Rustで日本語を含むメールを送信する
Rustでメールを送信する。 lettre lettreというメールクライアントも利用できるメーラーのクレートを利用して、日本語を含むメールを送信するときの注意点を書いておきたい。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
自体は知らないことも多いので少しずつ知識を蓄えたいなと思う。
以上です。