macOS で Postfix(SMTPメールサーバー)を起動するまで
サーバーアプリケーションでメール送信機能を実装したいため、ChatGPTに相談しながら色々考えました。
- SendGrid
- Mailgun
- Amazon SES (Simple Email Service)
- SMTPサーバー (例: Postfix, Exim)
SendGrid のサービスを使えばSMTPサーバーを自前で用意する必要がなくなります。料金も比較的安いと思いますし、開発コストを抑えたい場合は、このようなサービスを利用するのもありかと思います。
今回はSMTPサーバーを実装する方向で、開発環境でテストしてみました。なんとmacOSには、標準でPostfixがインストールされていました。この記事では、macOSにPostfixをインストールして設定する手順を示します。
Postfixのインストール
macOSにはPostfixがデフォルトでインストールされていますが、必要に応じて最新バージョンをインストールすることも可能です。
Postfixの有効化と設定ファイルの編集
/etc/postfix/main.cf を編集して、基本設定を行います。sh
sudo nano /etc/postfix/main.cf
以下の設定を変更または追加します。
sh
# サーバー情報
myhostname = localhost
mydomain = local
myorigin = $myhostname
# メールの受信を許可するドメイン
mydestination = $myhostname, localhost.$mydomain, localhost
# ネットワーク設定
mynetworks = 127.0.0.0/8
# メールボックスの設定
home_mailbox = Maildir/
# SMTP接続の設定
inet_interfaces = loopback-only
Postfixの起動と確認
Postfixを起動して、動作を確認します。
sh
sudo postfix start
メールキューの状態を確認するには、以下のコマンドを使用します。
sh
postqueue -p
メールの送信テスト
以下のコマンドを使用して、ローカルユーザーにメールを送信します。
sh
echo "This is a test email" | mail -s "Test Postfix" your_username@localhost
メールの受信確認
受信したメールは、ユーザーのホームディレクトリの Maildir フォルダに保存されます。メールクライアントを使用して、メールを確認することもできます。
実際にはこんな感じでメールが格納されいます。
zsh
$ cat Maildir/new/1720238174.V1000011I18ff305M712029.mac.local
Return-Path: <your_username@localhost>
X-Original-To: your_username@localhost
Delivered-To: your_username@localhost
Received: by localhost (Postfix, from userid 501)
id AB90518FF374; Sat, 6 Jul 2024 10:59:34 +0900 (JST)
To: your_username@localhost
Subject: Test Postfix
Message-Id: <20240706015934.AB90518FF374@localhost>
Date: Sat, 6 Jul 2024 10:59:34 +0900 (JST)
From: your_username@localhost (Toshihiko Arai)
This is a test email
とりあえず成功です!ただしこのままではGmailへ送信できませんので、TLSなどの設定を行う必要があります。