独り言


テストメール用のメールサーバーを設定する。

ページトップへ


PHPの開発をしているとどうしてもメールの送信が絡んできます。送信したメールのチェックを行う必要がありますが、このままではメールを送ることができません。
SMTPサーバーにメールリレーを設定して自分のメールアカウントを使用するという手もありますが、今一気が進みません。また、転送を受け付ける所と転送を拒否される所があり、設定が複雑になっていきます。
開発環境用に様々なメールサーバーもあるようですが、今回はpostfix と dovecot を設定し、テスト用のメールアドレスを使ってPOP3でメールを受け取る様にします。


  1. dovecot のインストール

    root 以外のメールテスト用パスワードを設定していない場合は、ユーザーを追加してください。

    ユーザーを追加します。
    [root@localhost ~]# adduser mailtest
    
    パスワードを設定します。
    [root@localhost ~]# passwd mailtest
    ユーザー mailtest のパスワードを変更。
    新しいパスワード:
    新しいパスワードを再入力してください:
    passwd: すべての認証トークンが正しく更新できました。
    

    postfix はすでにインストールされていると思いますので、dovecot をインストールします。

    [root@localhost ~]# yum -y install dovecot
    
  2. postfix 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
    
  3. メール送受信の確認

    ◆ご自分のメーラーにアカウントを追加してください。

    • メールアドレス:mailtest@example.com 設定したテストメール用ユーザー名 + @example.com
    • ユーザー   :mailtest 設定したテストメール用ユーザー名
    • パスワード  :mailtest@example.com 設定したテストメール用ユーザーパスワード
    • SMTP    :127.0.0.1
    • POP3    :127.0.0.1

    ◆仮想マシンのネットワーク設定のポートフォワーディングにport 110、25 を追加します。
    仮想マシンを右クリックして設定 => ネットワーク => アダプター1 => 高度 => ポートフォワーディング
    詳しくは、VirtualBox ネットワーク設定をご覧ください。

    ◆テスト用アドレスにメールを送信してメーラーで受信できるかを確認する。

    [root@localhost ~]# mail -s 'Test Mail' mailtest@example.com <= Test Mail という表題でテストアドレス宛にメールを送る
    test mail OK <= メールの本文
    . <= 「.」で入力を完了してメールが送信されます。
    

    ◆メーラーで送受信を行い、メールが受信できるか確認をしてください。多少時間がかかる場合があります。
    もし、メールを受信できない場合は、IPアドレスの設定等を確認してください。
    メールのエラーは /var/log/maillog に記録されますので、こちらを確認しながら作業を進めるのが早道です。

  4. 誤って外部にメールに送信しない様に設定の追加

    誤って大量に外部にメールを送信して迷惑をかける。キューが大量にたまるのを防ぐ為に、外部にメールを送信しない様にします。

    ◆/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
    
wordprass