postfixを使用してメール送信専用のサーバを構築する手順を記録しておきます。
ここではAWSのサーバを使用しております。
インストール
# dnf install postfix
コンフィグファイルの設定
/etc/postfix/main.cf の差分ファイルを以下に記します。
# diff /etc/postfix/main.cf /etc/postfix/main.cf.org
96d95
< myhostname = aws.dassyi.com
104d102
< mydomain = dassyi.com
121d118
< myorigin = $mydomain
141,142c138
< #inet_protocols = all
< inet_protocols = ipv4
---
> inet_protocols = all
290d285
< mynetworks = 127.0.0.1
598d592
< smtpd_banner = $myhostname ESMTP unknown
サービスの起動
# systemctl start postfix
メール送信テスト
# echo "SSL Certfile has been executed. Please Check!" | mail -s "SSL Certfile at aws" 送信先のメールアドレス
送信先のメールアドレスに届いているか確認します。
しかし、届きませんでした。/var/log/maillogを確認すると、メールを外部に配送しようとしていましたが、拒否されているようです。ググるとAWSでは25番ポートを使用して外部にメールは送付できない様子です。(迷惑メール対策のため)これに対応するには申請が必要との事ですが、面倒なので、別の方法を検討することにしました。
他のメールサーバから認証して送付
そこで、別のメールサーバへポート587で接続して、メール配送をしてみます。具体的には、xserverでメール配送用のアカウントを1つ作成し、AWSのサーバからそちらに接続(認証)してメールを送付します。
まずAWSのサーバのメール配送ユーザにて、~/.mailrc ファイルを作成します。
(今回は cronで仕掛けたシェルの実行結果をメールで通知したいので rootユーザで実行しています)
# vi ~/.mailrc
set smtp=smtp://メールサーバ.wpx.ne.jp:587
set from=メールアカウント@dassyi.com
set smtp-auth-user=メールアカウント@dassyi.com
set smtp-auth-password="パスワード"
set smtp-use-starttls
次に、以下のコマンドでメール送付テストを実施します。
# echo "test Mail." | mailx -s "Test Mail" 宛先のメールアドレス
すると、
host certificate does not match “smtp.dassyi.com”
Continue (y/n)? “/root/dead.letter” 11/310
. . . message not sent.
といったメッセージが出て、送信できませんでした。
こちらの理由は、.mailrcに設定したメールサーバのホスト名が証明書と一致しておらずダメでした。ですので、上述に記載したとおりに修正しました。
こちらで、メールが届いているかを確認します。無事届いていることを確認できました。
今回はここまでとなります。