Postfix + Dovecot でメールサーバ

自宅サーバー(CentOS6.2)なので必然的にISP網内での設置なりOPB25の制限を受けます。
そこでISPのSMTPサーバーをリレーして送信する必要があるのと、妙なこだわりでメールクライアントの送信サーバは全てサブミッションポート(587)に統一したい。以上の要件で設定します。
 ※ページの最後に下記を一括実行するスクリプトを用意しています。

Postfix : メールの送信を請け負ってくれます。
Dovecot : IMAP,POP3など受信箱を請け負ってくれます。

前のページから来ていない方はPostfixとDovecotがインストールしてあるか確認してください。

 test `rpm -qa postfix` || yum -y install postfix [Enter]
 test `rpm -qa dovecot` || yum -y install dovecot [Enter]


リレー先のSMTPで必要なSMTP認証システムをインストールしておきます。

 yum -y install cyrus-sasl-plain [Enter]
yum -y install cyrus-sasl-md5 [Enter]

Postfix の設定

  1. サブミッションポートを使えるようにします
    sed -i 's/^#submission/submission/' /etc/postfix/master.cf [Enter]
  2. 設定ファイル(/etc/postfix/main.cf) の編集箇所のみを列挙します。

    [自サーバのホスト名] (ex mail.hoge.com)
    myhostname = {ホスト名}
    [自サーバのドメイン名] (ex hoge.com)
    mydomain = {ドメイン名}
    [すべてのサイトから受信できるようにします]
    inet_interface = all
    [自サーバで受け取るドメインを指定します]
    mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
    [信頼できるネットワーク] (smtp-auth以外は信用しないのでlocalhostのみでOK)
    mynetwork = 127.0.0.1/8
    [メールボックスの在り処] /Maildir にするとmailbox_size_limitが無効になります
    home_mailbox = Maildir/
    [ヘッダーのチェック] ※必要に応じて
    header_checks = regexp:/etc/postfix/header_checks
    [メッセージのチェック] ※必要に応じて
    body_checks = regexp:/etc/postfix/body_checks
    [メーラーの隠ぺい]
    smtpd_banner = $myhostname ESMTP
    メール1通の制限サイズ (ex 10MB = 1024*1024*10 = 10485760)
    message_size_limit = 10485760
    メールボックスの制限解除
    mailbox_size_limit = 0
    smtp-authの設定を追記する
    smtp-authの使用宣言
    smtpd_sasl_auth_enable = yes
    smtp-authのタイプ
    smtpd_sasl_type = dovecot
    意味を調べないと・・・なんとなくはわかりますよね。
    smtpd_sasl_path = private/auth
    smtpd_sasl_local_domain = $myhostname
    smtpd_sasl_security_options = noanonymous
    smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject
    ISPのSMTPをリレーする
    リレーするホストを設定(編集)
    relayhost = [{ISPのSMTPサーバ名}]:587
    リレーでSMTP-Authを使用する宣言
    smtp_sasl_auth_enable = yes
    リレーSMTP-Authのユーザ名とパスワードの在り処
    smtp_sasl_password_maps = hash:/etc/postfix/isp_auth_info
    リレーSMTP-Authの認証ルール ※認証システムのインストールを忘れずに
    smtp_sasl_mechanism_filter = login, plain, cram-md5
    これも調べないと・・・
    smtp_sasl_security_options = noanonymous

  3. リレーSMTP-Authのユーザ名・パスワードを設定します。

    echo ‘[{ISPのSMTPサーバー名}]:587 {ユーザ名}:{パスワード}’ > /etc/postfix/isp_auth_info [Enter]
     ex… echo ‘[smtp.ocn.ne.jp]:587 hoge-user:hoge-passwd’ > /etc/postfix/isp_auth_info

    postmap /etc/postfix/isp_auth_info [Enter]

Dovecotの設定

  1. /etc/dovecot/conf.d/10-auth.confを編集
    disable_plaintext_auth = no
    auth_mechanisms =  plain login
  2. /etc/dovecot/conf.d/10-mail.confを編集
    mail_location = maildir:~/Maildir
  3. /etc/dovecot/conf.d/10-master.confを編集
     Postfix smtp-auth と記述したコメント行の直下を下記のように変更します。
     コメントを外すのもお忘れなく...
    unix_listener /var/spool/postfix/private/auth {
        mode = 0666
        user = postfix
        group = postfix
    }

最後に起動します。

chkconfig postfix on
chkconfig dovecot on
/etc/rc.d/init.d/postfix start
/etc/rc.d/init.d/dovecot start

以上です。

一括実行をするスクリプトです ここからダウンロードして確認できます。
スクリプトをダウンロードして実行します ※CentOS6.2 / postfix-2.6.6 / Dovecot-2.0.9

# cd /var/tmp [Enter]
# wget http://stargate.undo.jp/download/centos/1_postfix.sh [Enter]
# bash 1_postfix.sh [Enter]
Your SMTP Server in ISP-Network
and Relay ISP SMTP Server ? (yes/no) [yes]: yes [Enter] ← ISPのSMTPをリレーします
ISP SMTP Server : smtp.hoge.com [Enter] ← ISPの送信用メールサーバ名を指定します
ISP Mail UserName : hoge-user [Enter] ISPのメール用ユーザ名
ISP Mail Password : hoge-passwd [Enter] ISPのメール用パスワード
Run OK ? (yes/no) [no]: yes [Enter] これで実行します