ubuntuのサーバーで動かしているcrontabにはMAILTOが設定してあります。
ところがメールが送られてこない。なぜかというとMTA(Mail Transfer Agent)がインストールされていないから。
mail.logを確認して、postfixをインストールしよう
$ tail -n 50 /var/log/mail.log
2026-07-06T16:40:01.113924+09:00 xxx-xxx-xxxxxx sendmail[251418]: 6667e1Hw251418: to=xxx@xxx.xxx, ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30884, relay=[127.0.0.1] [127.0.0.1], dsn=4.4.1, stat=Deferred: Connection refused by [127.0.0.1]16:42
昔はそんなこと意識しないで、設定していたのにな…なんて思いながら、AIに言われるがままpostfixをインストール。
最近はAIに頼る事が多いですが、前はチュートリアルサイトを参考にしながらやっていたりしたので、そんなに違和感は持たない。
$ sudo apt update
$ sudo apt install postfix
$ sudo systemctl start postfix
$ sudo systemctl enable postfix
設定ミスなので、再設定コマンドを打つ
これで良いはずだったのだが、まだ結果を受信できない。なぜか。
それはインストール途中のダイアログで「Local only」を選んだから。
あそこで「Internet Site」を選ばなくてはいけなかった。外部ドメインに送信してるからね。
やりなおしたい。
$ sudo dpkg-reconfigure postfix
そんな時はこれ!インストール済みパッケージを再設定する事ができる。
でも、完全に同じ画面になるかというとそうでもなくて、さっきは出なかった画面まで出てくる。
なので、一応メモ。
General type of mail configuration
Internet Siteを選ぶ。
System mail name
このサーバー自身を識別するための名前を設定。初期値でOK。
Root and postmaster mail recipient
システムエラーや通知メール(root 宛てや postmaster 宛て)が届いた際、それを実際に受け取るユーザー名を指定。今回は空欄(初期値)にした。
Other destinations to accept mail for
サーバーが自分宛てのメールとして溜め込むドメイン名のリスト。初期値。
Force synchronous updates on mail queue?
メールデータをディスクに書き込む際、安全性を最優先して「完全に書き込みが終わるまで次の処理を待つ(同期処理)」にするかどうかを選択。初期値(NO)でOK。
Local networks
このメールサーバーを使って、メールの送信(中継)を許可するネットワークの範囲を指定。初期値のままにする。
Mailbox size limit (bytes)
メールボックスの制限を設けるかどうか。今回は0(制限なし)にした。
Local address extension character
メールアドレスの後ろに特定の文字を付けて、アドレスを拡張できるようにする設定(Gmailの+みたいな感じ)。初期値でOK。
Internet protocols to use
使うプロトコルを選択する。all / ipv4 / ipv6 から選ぶ。初期値のallでOK。
以上で設定完了です。これで今回はこれで無事メールが届きました。
あとがき
16年ぶりにブログを書いた訳ですが、昔のほうがザクザク進む感じで冒険感はあったかな、と思います。
今もチャレンジし続けたいものです。きっとそのほうが楽しい。