Postfix+Dovecot+SMTP-Auth

Postfix+DovecotでSMTP-Authを実装した時のメモ。
要件:
 ・よくある「Postfix+SASL」では、SMTP用アカウントとPOP/IMAP用アカウントが別管理となる為、Dovecotの機能を利用したSMTP-Authを実装する
 ・Dovecot用アカウントでは、仮想メールボックスを利用する(システムアカウントを作成しない)
 ・TSL/POS/IMAPSなどのSSLは利用しない

前提:

 

  • Dovecot/Postfixはインストール済み
  • デフォルトのMTAは、Postfixになっている
  • 各サービスは自動起動設定されている

 

 

 

1. ユーザ/グループの作成

        $ groupadd -g 10000 vmailuser

        $ useradd -u 10000 -g 10000 -d /var/mail/vmail -s /sbin/nologin vmailuser

        $ id vmailuser

            uid=10000(vmailuser) gid=10000(vmailuser) 所属グループ=10000(vmailuser)

 

 
2. dovecotパスワードファイル作成(plain)
        
        $ sudo cat /etc/dovecot-passwd
            # username:password:uid:gid::directory
            sample@sample:{plain}password:10000:10000::/var/mail/vmail/sample
 3. dovecotパスワードの生成方法
        
        # dovecotpw -s HMAC-MD5 -p hogehoge
        # dovecotpw -s HMAC-MD5
        パスワードを入力後、その結果をdovecot-passwdへ貼り付け
 
4. dovecot.confの変更

        $ sudo cat /etc/dovecot.conf | grep -v '^\s*#' | grep -v "^$"

            protocols = imap pop3

            ssl_disable = yes

            mail_location = maildir:~/Maildir

            protocol imap {

            }

 

            protocol pop3 {

            }

            protocol lda {

              postmaster_address = postmaster@example.com

            }

            auth_verbose = yes

            auth_debug = yes

            auth_debug_passwords = yes

            auth default {

              mechanisms = plain login

              passdb pam {

              }

              passdb passwd-file {

                args = /etc/dovecot-passwd

              }

              userdb passwd {

              }

              userdb passwd-file {

                args = /etc/dovecot-passwd

              }

              user = root

              socket listen {

                client {

                  path = /var/spool/postfix/private/auth

                  mode = 0660

                  user = postfix

                  group = postfix

                }

              }

            }

            dict {

            }

            plugin {

            }

 

5. postfix(main.cf)へ追記

        $ sudo vim /etc/postfix/main.cf

            #—————————————————————-

            # SMTP-Auth

            #—————————————————————-

            # SASL認証

            #

            smtpd_sasl_auth_enable = yes

            smtpd_sasl_path = private/auth

            smtpd_sasl_type = dovecot

 

            # sasl認証に対応していないメーラは拒否

            #

            #broken_sasl_auth_clients = yes

 

            # クライアントに対しての認証設定

            #

            #smtpd_sasl_security_options = noanonymous, noplaintext

 

            # 認証に使用するサーバを指定

            #

            #smtpd_sasl_local_domain = $myhostname

 

            # メール中継設定

            #

            smtpd_recipient_restrictions =~

                permit_mynetworks,

                permit_sasl_authenticated,

                reject_unauth_destination

 

6. 確認

    1. dovecot(imap)へログインが可能

    2. サーバから、内->内へのメール配信が可能

    3. サーバから、内->外へのメール配信が可能

    4. クライアントから、内->内へのメール配信が可能

    5. クライアントから、内->外へのメール配信が可能

    6. 外部からのメール受信が可能