メール送信用サーバの設定

サーバ

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に設定したメールサーバのホスト名が証明書と一致しておらずダメでした。ですので、上述に記載したとおりに修正しました。

こちらで、メールが届いているかを確認します。無事届いていることを確認できました。

今回はここまでとなります。