PHPの開発をしているとどうしてもメールの送信が絡んできます。送信したメールのチェックを行う必要がありますが、このままではメールを送ることができません。
SMTPサーバーにメールリレーを設定して自分のメールアカウントを使用するという手もありますが、今一気が進みません。また、転送を受け付ける所と転送を拒否される所があり、設定が複雑になっていきます。
開発環境用に様々なメールサーバーもあるようですが、今回はpostfix と dovecot を設定し、テスト用のメールアドレスを使ってPOP3でメールを受け取る様にします。
root 以外のメールテスト用パスワードを設定していない場合は、ユーザーを追加してください。
ユーザーを追加します。 [root@localhost ~]# adduser mailtest パスワードを設定します。 [root@localhost ~]# passwd mailtest ユーザー mailtest のパスワードを変更。 新しいパスワード: 新しいパスワードを再入力してください: passwd: すべての認証トークンが正しく更新できました。
postfix はすでにインストールされていると思いますので、dovecot をインストールします。
[root@localhost ~]# yum -y install dovecot
◆先にpostfix の設定をします。
/etc/postfix/main.cf を編集します。
75行目 myhostname = example.com 83行目 mydomain = example.com 113行目 コメントアウト# を外します。 inet_interfaces = all 165行目 コメントアウト# を外します。 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain 264行目 アドレスを修正します。仮想マシンが他のアドレスに設定されている場合はそのアドレスにします。 mynetworks = 10.0.2.0/24, 192.168.56.0/24, 127.0.0.0/24 419行目 コメント# を外しMaildir を指定します。 home_mailbox = Maildir/
◆次にdovecot を設定します。開発環境での使用ですので、単純にメーラーから受信できるようにします。
/etc/dovecot/dovecot.conf を修正します。
24行目 コメントアウト# を外します。
protocols = imap pop3 lmtp
◆メールボックス(Mailbox)を指定します。
/etc/dovecot/conf.d/10-mail.conf を修正します。
30行目 コメントアウト# を外します。
mail_location = Maildir:~/Maildir
◆dovecot のユーザーをpostfix にします
/etc/dovecot/conf.d/10-master.conf を修正します。
89行目からを修正
unix_listener auth-userdb {
mede = 0666
user = postfix
group = postfix
}
◆ssl の使用設定を無効にします。
/etc/dovecot/conf.d/10-ssl.conf を修正します。
8行目 設定の変更
ssl = no
◆POPにプレーンパスワードでログイン出来る様にします。
/etc/dovecot/conf.d/10-auth.conf を修正します。
10行目 disable_plaintext_auth = no 100行目 auth_mechanisms = plain login
◆最後に、dovecot をスタートアップに登録してサービスの再起動をします。
[root@localhost ~]# systemctl enable dovecot Created symlink from /etc/systemd/system/multi-user.target.wants/dovecot.service to /usr/lib/systemd/system/dovecot.service. [root@localhost ~]# systemctl restart dovecot [root@localhost ~]# systemctl restart postfix
◆ご自分のメーラーにアカウントを追加してください。
◆仮想マシンのネットワーク設定のポートフォワーディングにport 110、25 を追加します。
仮想マシンを右クリックして設定 => ネットワーク => アダプター1 => 高度 => ポートフォワーディング
詳しくは、VirtualBox ネットワーク設定をご覧ください。
◆テスト用アドレスにメールを送信してメーラーで受信できるかを確認する。
[root@localhost ~]# mail -s 'Test Mail' mailtest@example.com <= Test Mail という表題でテストアドレス宛にメールを送る test mail OK <= メールの本文 . <= 「.」で入力を完了してメールが送信されます。
◆メーラーで送受信を行い、メールが受信できるか確認をしてください。多少時間がかかる場合があります。
もし、メールを受信できない場合は、IPアドレスの設定等を確認してください。
メールのエラーは /var/log/maillog に記録されますので、こちらを確認しながら作業を進めるのが早道です。
誤って大量に外部にメールを送信して迷惑をかける。キューが大量にたまるのを防ぐ為に、外部にメールを送信しない様にします。
◆/etc/postfix/main.cf を編集し、transport_maps を有効にします。
最終行に以下の設定を追加します。
transport_maps = hash:/etc/postfix/transport
◆/etc/postfix/transport を修正します。
example.com localhost localhost.localdomain 宛のメールはローカル配信をさせます。
他は、discard received email を戻してメールを削除します。
example.com local:
localhost local:
localhost.localdomain local:
* discard: "discard received email"
◆設定を有効化します。
posfix のDBを更新します。 [root@localhost ~]# postmap /etc/postfix/transport posfix を再起動します。 [root@localhost ~]# systemctl restart postfix
◆設定を確認します。
外部へメールを送信してみます。 [root@localhost ~]# mail -s 'Test Mail' 有効なメールアドレス Test Mail OK . メールのログを確認します。 [root@loclhost ~]# cat /var/log/maillog 以下の様なログが記録されていれば設定は成功です。 Feb 1 10:02:10 ca postfix/qmgr[2087]: 6A4DDC1130B: from=<root@example.com>, size=431, nrcpt=1 (queue active) Feb 1 10:02:10 ca postfix/discard[2138]: 6A4DDC1130B: to=<入力したメールアドレス>, relay=none, delay=1357, delays=1357/0.04/0/0, dsn=2.0.0, status=sent ("discard received email") Feb 1 10:02:10 ca postfix/qmgr[2087]: 6A4DDC1130B: removed