ウチの自宅サーバーをDebian8.0 JessieにアップデートするためにOSをクリーンインストールしたのですが、前に記事にしたPostfix+Dovecot+SASL2の設定ではメールシステムが上手く動きませんでした。
DovecotのWikiページを参考に、pop3とIMAP、SMTPに対応させて、さらにpop3s、IMAPs、SMTPsで利用する設定を実施した備忘録です。
このページの目次
Dovecot SASL認証を使う
メールサーバーシステムを設定しようとすると、PostfixとDovecotでMTAとMRAと役割が分かれているとか、悪意のある第三者にスパムメールの踏み台にされないようにSASL認証を設定しないといけないなど、相当ややこしいですね。
今回もバージョンが変われば設定も変わるということで最初さっぱり動いてくれなかったので、いろいろググっていたらDovecotがSASL認証を上手い事やってくれるようなことがDovecotのWikiに英語で書いてありました。いままでPostfixとDovecotとSASLの3つを設定して連携させなくてはいけなかったのがPostfixとDovecotの2つだけ設定すればいいようです。3つを連携させるのが2つになるだけで全然複雑さが違います。
PostfixがDovecot SASLに対応しているかは postconf -a コマンドで確認できるとのことです。(下記のpostfixとdovecotを先にインストールしてください。)
# postconf -a cyrus dovecot
Debian Jessieでは、cyrusとdovecotが対応しているようです。
PostfixとDovecotのインストール
postfixとdovecotをインストールします。aptitudeでインストールします。
aptitude install dovecot-imapd dovecot-pop3d postfix
Dovecotの設定
dovecotの設定は、/etc/dovecot/conf.d の中の4ファイルを編集します。
10-master.conf ファイルの編集
22-23行目の#コメントを外してIMAPsのポート993を待ち受け状態にします。19行目のIMAPポート143はデフォルトで有効になっているので#はそのままで大丈夫です。
service imap-login { inet_listener imap { #port = 143 } inet_listener imaps { port = 993 ssl = yes }
43-44行目の#コメントを外してPOP3sのポート995を待ち受け状態にします。
service pop3-login { inet_listener pop3 { #port = 110 } inet_listener pop3s { port = 995 ssl = yes } }
96-98の#コメントを外して、PostfixのSASL認証と連携させます。
# Postfix smtp-auth unix_listener /var/spool/postfix/private/auth { mode = 0666 }
10-mail.conf ファイルの設定
Maildir形式に変更します。30行目を#コメントアウトして31行目を追記します。
#mail_location = mbox:~/mail:INBOX=/var/mail/%u mail_location = maildir:~/Maildir
10-auth.conf ファイルの編集
10行目をyesからnoに変えて、プレインテキスト認証を有効にします。
disable_plaintext_auth = no
100行目に login を追加してOutlook Expressやwindowsメールに対応させます。
auth_mechanisms = plain login
10-ssl.conf ファイルの編集
POP3s、IMAPs、SMTPsを使うならTLS/SSL必須なので有効にします。私しか使わないメールサーバーなので、証明書はPostfixインストール時に作成されたsnakeoil証明書を利用します。
6行目を#を外して、yesに変えて有効にします。
ssl = yes
13-14行目で証明書ファイルの場所を指定します。
ssl_cert = </etc/ssl/certs/ssl-cert-snakeoil.pem ssl_key = </etc/ssl/private/ssl-cert-snakeoil.key
Postfixの設定
postfixの設定は/etc/postfix の中の2つのファイルを編集します。
main.cf ファイルの編集
38-39行目を#コメントアウトして、一行追加してMaildir形式に変更します。
#mailbox_command = procmail -a "$EXTENSION" #mailbox_size_limit = 0 home_mailbox = Maildir/
SASL認証をDovecotと連携させる設定を一番下に追加します。
smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
master.cf ファイルの編集
今回はSMTPsに対応させるので、28-38行目の#コメントを外します。ポート587のsubmissionポートも使う場合は、17-27行目も#を外します。
#tlsproxy unix - - - - 0 tlsproxy #submission inet n - - - - smtpd # -o syslog_name=postfix/submission # -o smtpd_tls_security_level=encrypt # -o smtpd_sasl_auth_enable=yes # -o smtpd_reject_unlisted_recipient=no # -o smtpd_client_restrictions=$mua_client_restrictions # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions= # -o smtpd_relay_restrictions=permit_sasl_authenticated,reject # -o milter_macro_daemon_name=ORIGINATING smtps inet n - - - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_reject_unlisted_recipient=no -o smtpd_client_restrictions=$mua_client_restrictions -o smtpd_helo_restrictions=$mua_helo_restrictions -o smtpd_sender_restrictions=$mua_sender_restrictions -o smtpd_recipient_restrictions= -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING #628 inet n -
Maildirディレクトリ作成
メール保存をMaildir形式にしたので、Maildirディレクトリを作成します。
既存ユーザーでログインした状態で
su [user_name] maildirmake.dovecot ~/Maildir
各ユーザーのホームディレクトリにMaildirフォルダを作ります。
次は、suコマンドでroot権限になってから
maildirmake.dovecot /etc/skel/Maildir
これで今後追加するユーザーはMaildirディレクトリが自動で作られます。
サービス再起動と動作確認
設定が有効になるのはサービス再起動後からです。
/etc/init.d/dovecot restart /etc/init.d/postfix restart
動作確認
次の3つとも動作確認ができればたぶんPsotfixとDovecot側の設定は成功です。今回は相当ハマりました。
待ち受けポート確認
netstat -an –tcp コマンドで各ポートがLISTENになっているか確認します。
# netstat -an --tcp 稼働中のインターネット接続 (サーバと確立) Proto 受信-Q 送信-Q 内部アドレス 外部アドレス 状態 tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN
telnet 127.0.0.1 25
# telnet 127.0.0.1 25 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. 220 fanless-svr.ikt-s.com ESMTP Postfix (Debian/GNU)
telnetでポート25に接続してみます。Postfixの文字が出ていればOKです。quitと入力して終了します。
Postfixの表示が出ていない場合は怪しいです。この場合はCtrl+] (‘む’のキー)を押してqで戻ります。
telnet 127.0.0.1 110
# telnet 127.0.0.1 110 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. +OK Dovecot ready.
ポート110ではDovecot readyの表示が出ていればOKです。
クライアントPCのメーラー設定
PCのメーラーにアカウント設定をします。Windows Live メールで設定した例です。
最後にひとこと
これでやっとメールシステム復旧しました。これでもだいぶ簡単に設定できるようになったと思います。
参考サイト: