✉️

Ubuntu 24.04 で postfix を導入する

に公開

これなに

  • ちょっと今お手伝いしているところで postfix 導入をすることになった
  • 実際ちゃんとやったことないので、作業ログとして記録
  • そのため記事内容が間違っていてもご容赦ください

前提条件

  • Ubuntu 24.04
$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 24.04 LTS
Release:	24.04
Codename:	noble
$ 

セットアップ手順

postfix インストール

apt アップデートを行ってからインストールします

sudo apt update
sudo apt install postfix

main.cf 設定編集

以下のパラメーターを設定します。

  • myhostname:サーバーのホスト名
  • inet_interfaces:loopback-only を設定して受信を無効化する
  • relayhost:メールを送信する中継サーバー設定
    • 値なし: 送信先のメールサーバーにダイレクトに送信
    • 値あり: 設定したSMTPサーバーを中継して送信

サンプルは以下の通りです。

myhostname = mail.example.com
myorigin = /etc/mailname
inet_interfaces = loopback-only
relayhost =

postfix 再起動

設定内容を反映するために再起動します

sudo systemctl restart postfix

SPFレコードをDNSに追加

以下をTXTレコードとしてメインのDNSレコードに追加

v=spf1 a mx ip4:[IP address of server] ~all

設定内容の確認

ここまでの設定内容を確認します。
内容が正常に表示されればOK

dig example.com TXT

付録

終わったらメールが送れるか確認しましょう

curl -X POST https://examle.com/api/user/auth/signup \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "name": "Test User", 
    "email": "su3.hokkaido@example.com"
  }'

いろいろ確認するのに使ったコマンド集

Laravel で構築しているのですが、その際にいろいろ使った確認コマンドをメモ

メール設定を確認

php artisan tinker
>>> config('mail')
>>> config('app.url')

ログの確認

ログ監視

sudo journalctl --since "1 minute ago" | grep -i postfix

Laravelのログ確認

tail -f /var/www/hdmp/current/storage/logs/laravel.log

キューの確認

キュー設定確認

php artisan tinker
>>> config('queue.default')

キューワーカーが動いているか確認

sudo systemctl status laravel-queue-worker

もしくは

ps aux | grep queue

さいごに

完全初心者なメモなので、ところどころ足りてない部分があるかもしれません。
そして多分似たような記事がたくさんあると思うので、類似記事も参考にしていただけると良いかと思います。

GitHubで編集を提案

Discussion