外部からメールサーバを使えるようにする
GNU Mailman導入絡みで、いずれ外部から SMTPや POPを通さないといけなくなるような気がプンプンするので今のうちにやっておくことにします。この作業は以下の記事の続きです。
- メールサーバを立てる - satake7’s memo
- メールサーバを立てる(続き) - satake7’s memo
- メールサーバを立てる(続き) - satake7’s memo
- メールサーバを立てる(続き) - satake7’s memo
- メールサーバを立てる(続き) - satake7’s memo
- RT-200NEの設定 - satake7’s memo
やりたいこと
やりたいことは、Postfixと Dovecotで (外部から) SMTP-Authと APOPを使いたいということです。そのための SMTPと POPのパスワードは Dovecotに管理してもらうことにします。SMTP認証を導入するので、plainなパスワード認証と PAM(login)認証は止めにします。
Postfixの設定
$ e /etc/postfix/main.cf
smtpd_banner = $myhostname ESMTP unknown biff = no append_dot_mydomain = no delay_warning_time = 12h myhostname = mail.555.jp mydomain = 555.jp myorigin = $mydomain alias_maps = hash:/etc/aliases, regexp:/etc/postfix/aliases.reg alias_database = hash:/etc/aliases mydestination = $myhostname, localhost.$myorigin, localhost, $myorigin, min10.com relayhost = mynetworks = 127.0.0.0/8 192.168.1.0/24 home_mailbox = Maildir/ message_size_limit = 10485760 mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all unknown_local_recipient_reject_code = 550 # SMTP-Auth setting smtpd_sasl_auth_enable = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth-dovecot smtpd_sasl_authenticated_header = yes smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_saslの部分を追加します。SASLというのは SMTP-Authを外部に任せる機能のことらしいです。ここで Dovecotに任せますよといってるわけですね。
$ e /etc/postfix/master.cf
# ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ========================================================================== smtp inet n - - - - smtpd submission inet n - - - - smtpd
ポート(25)を開けるため、master.cfの『submission inet n』のコメントを外します。
Dovecotの設定
$ e /etc/dovecot/dovecot.conf
protocols = imap imaps pop3 pop3s disable_plaintext_auth = no log_timestamp = "%Y-%m-%d %H:%M:%S " login_greeting = POP3 ready. mail_location = maildir:~/Maildir mail_privileged_group = mail protocol imap { } protocol pop3 { pop3_uidl_format = %08Xu%08Xv } auth default { mechanisms = apop cram-md5 passdb pam { } passdb passwd-file { args = /etc/dovecot/passwd } userdb passwd { } user = root socket listen { client { path = /var/spool/postfix/private/auth-dovecot mode = 0660 user = postfix group = postfix } } } dict { } plugin { }
コメントが山のように入っていますが、有効なところはこれだけです。この設定で、pop=apop、SMTP-Auth(IMAPも)は cram-md5になります。(socketのpathを含め、あまりよく理解せずに設定しています。ダメですね)
パスワードの設定
$ dovecotpw Enter new password: Retype new password: {HMAC-MD5}efaa8bbe8fb0d28a55f7595c3420791990f25cc536f0e23c46cb392cb2b058e2
dovecotpwで CRAM-MD5のパスワードを生成して、それを「/etc/dovecot/passwd」に登録しておきます。(この例のパスワードは適当なものです)
$ e /etc/dovecot/passwd
user@smtp:{HMAC-MD5}efaa8bbe8fb0d28a55f7595c3420791990f25cc536f0e23c46cb392cb2b058e2
user:{PLAIN}password
『user@smtp』が SMTP-Auth用のユーザIDとパスワードで、『userx』が APOP用のパスワードです。
※ 注意:受信に使うユーザIDは実ユーザIDと同一でないといけない。