Vagrant+AlmaLinuxで構築した開発環境にPostfixをインストールする
こんばんわ。
連休中は私の趣味で家電量販店ばかり巡っていた、どうもみけぽんです。
今となってはWEBサイトからメールを送信するのは当たり前となっているので、今回はPostfixをインストールしてメールを送信してみようと思います。
前回の記事
Postfixのインストール
Postfix及びプライベートネットワークから外部へメールするために必要なモジュールをインストールします。
$ dnf install -y postfix cyrus-sasl-md5 cyrus-sasl-plain
インストール後は忘れずに有効化もしておきます。
$ systemctl enable postfix
Postfixの設定ファイルの編集
まずは設定ファイルのバックアップをしておきます。
$ cp -p /etc/postfix/main.cf /etc/postfix/main.cf.backup
そして修正します。
$ vi /etc/postfix/main.cf
inet_interfaces = localhost
myhostname = localhost.com
mydomain = localhost.com
mydestination =
# 末尾に追記
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
smtp_sasl_security_options = noanonymous
ちなみにCeotOS8の本番サーバーでは追記部分はなくてもメール送信はできました。
sasl_passwdファイルの作成
/etc/postfixに移動してからsasl_passwdファイルをviコマンドで作成し、下記内容を追記してください。
[smtp.gmail.com]:587 Gmailアドレス:パスワード
これでGmailを使って外部へメール送信させる設定が整いました。
/etc/postfixにいる状態で下記コマンドを実行し、sasl_passwdを有効化してください。
$ postmap sasl_passwd
Postfixの再起動
再起動する前に文法チェックを行ってください。
エラーがなければ何も表示されません。
$ postfix check
問題なければ再起動します。
$ systemctl restart postfix
メールの送信
任意の場所にメール送信用のスクリプトを作成し、実行してください。
$ vi test.php
<?php
$to = "hogehoge@gmail.com";
$subject = "テストメール";
$message = "これはテストメールです";
echo mail($to, $subject, $message);
$php test.php
実行時にsasl_passwdで設定したGmailアカウントに「重大なセキュリティ通知」というタイトルのメールが来ますが、今回は[安全性の低いアプリの許可] をオンにしてください。
$toに設定したメールアドレスにメールが届けば成功です。
届かなかった場合は/var/log/maillogを確認してください。
まとめ
本番サーバーではGmailにリレーさせなくてもメール送信することが出来ました。
プライベートネットワークでは外向きにメール送信できないようで、それが分からず三日以上ハマりました😇