Postfix+Dovecot メールサーバー追加設定

2022/1/20更新 dovecot.conf
2022/1/21更新 master.cf 使われていないパラメーター削除
2022/1/22更新 SMTP認証で250-AUTHが返ってこない問題

クラウド全盛のこの時代に、スタンドアロンで鯖建てする意味は希薄なのかもしれません。が、逸般の誤家庭の事情で積年の課題だったオンプレミスなメールサーバーを構築したいとの想いからとにかくメモします。

参考にしたサイトはCentOSでのサーバー構築サイトとして定評のあるCentOSで自宅サーバー構築 です。

今回は、smtps, imaps, pop3s による通信暗号化、SMTP-AUTH認証、Thunderbird, Evolution, Outlookでのメール送受信を目標にしています。

参考リンク:

メールサーバー構築(Postfix+Dovecot)

メールサーバー間通信内容暗号化(Postfix+Dovecot+OpenSSL+Certbot)

前提として、上記サイトのメールサーバー設定済みとします。

最初に、PostfixのSELinux保護によるpostfix_local_write_mail_spool のboolean値をon にします。

# setsebool -P postfix_local_write_mail_spool on
# getsebool postfix_local_write_mail_spool
postfix_local_write_mail_spool on ←確認

次に、

SMTP-AUTH(認証機能)を使ったメール送信 Postfix + dovecot の設定

を参考に/etc/postfix/main.cfファイルに下記パラメータを追記します。

/etc/postfix/main.cf
local_recipient_maps = luser_relay = unknown_user@localhost smtpd_sasl_security_options = noanonymous smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = $myhostname smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth
smtpd_tls_auth_only = yes
disable_vrfy_command = yes
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination

SMTP 認証がSMTP エラー (250): Authentication failed で失敗します にある通り、telenetでSMTP認証を確認できないときはまず、cyrus-sasl-plain cyrus-sasl-md5をインストール済みであることを確認します。それでもTLS経由のSMTP接続を止めてパスワードによるSMTP認証にしたいときには、お好みで以下のパラメータをコメントアウトすると良かったようです。

# yum install cyrus-sasl-plain cyrus-sasl-md5

/etc/postfix/main.cf

#smtpd_tls_auth_only = yes #smtpd_tls_protocols = !SSLv2,!SSLv3 #smtpd_tls_ciphers = high

参考URL:SMTP サーバーのトラブルシューティング

続いて、/etc/postfix/master.cfファイルの必要項目の行頭コメントを外して設定を有効にします。

/etc/postfix/master.cf
smtp inet n - n - - smtpd #smtp inet n - n - 1 postscreen #smtpd pass - - n - - smtpd #dnsblog unix - - n - 0 dnsblog #tlsproxy unix - - n - 0 tlsproxy submission inet n - 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_client_restrictions=permit_sasl_authenticated,reject # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING smtps inet n - 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_client_restrictions=permit_sasl_authenticated,reject # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING

ルーターの25,587,465ポートを開放、firewalld設定、postfix再起動してステータスを確認。

# firewall-cmd --add-service=smtp --permanent
# firewall-cmd --add-service=smtp-submission --permanent
# firewall-cmd --add-service=smtps --permanent
# firewall-cmd --reload

# systemctl restart postfix
# systemctl status postfix

参考書: CentOS 8実践ガイド[サーバ構築編] | Amazon.co.jp

次に、Dovecotのログインユーザーとパスワードの認証方法について追加設定をしていきます。

詳細は、質問掲示板に記述がありシステムユーザーを参照するshadow, passwd,pam認証などがありますが今回は、passwdfileでの認証を別途していきたいと思います。

参考URL:https://www.ipentec.com/document/linux-dovecot-read-postfix-virtual-mailbox-for-centos6

 まず、/etc/dovecot/conf.d/10-auth.conf ファイルの !include auth-passwdfile.conf.ext を有効にしてpasswdfileによる認証方法に変更。

/etc/dovecot/conf.d/10-auth.conf
#!include auth-deny.conf.ext #!include auth-master.conf.ext #!include auth-system.conf.ext #!include auth-sql.conf.ext #!include auth-ldap.conf.ext !include auth-passwdfile.conf.ext #!include auth-checkpassword.conf.ext #!include auth-vpopmail.conf.ext #!include auth-static.conf.ext
/etc/dovecot/conf.d/auth-passwdfile.conf.ext
passdb { driver = passwd-file #args = scheme=CRYPT username_format=%u /etc/dovecot/users args = /etc/dovecot/passwd } userdb { driver = passwd-file #args = username_format=%u /etc/dovecot/users args = /etc/dovecot/passwd }

続いて、SMTP-AUTH認証を有効にするため同じく、 /etc/dovecot/conf.d/10-auth.conf ファイルのauth_mechanismsにCRAM-MD5暗号方式を追記、

/etc/sasl2/smtpd.confファイルのmech_list:で指定する暗号方式と同じく整えます。

/etc/dovecot/conf.d/10-auth.conf
auth_mechanisms = plain login DIGEST-MD5 CRAM-MD5
/etc/sasl2/smtpd.conf
mech_list: plain login DIGEST-MD5 CRAM-MD5

続いて /etc/dovecot/conf.d/10-master.conf でpop3,imapのポート番号である110,143 をport = 0 として無効にしてimaps pop3sのプロトコルポート 993,995 の許可設定、Postfix smtp-authの有効設定を追加します。

個別的には#ssl = yes などのコメントアウトを外せばOKです。

参考サイト:Linuxで様々なサービスを構築しよう!!!| Dovecot 2.0の設定方法

service imap-login {
  inet_listener imap {
    port = 0
  }
  inet_listener imaps {
    port = 993
    ssl = yes
  }
#
service pop3-login {
  inet_listener pop3 {
    port = 0
  }
  inet_listener pop3s {
    port = 995
    ssl = yes
  }
}

# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
user = postfix
group = postfix
mode = 0666
}

一方で、/etc/dovecot/dovecot.confファイルの以下のコメントを外して設定を有効にします。

protocols = imaps pop3s
listen = *, ::

これはprotocols = pop3s imaps としても良いのですが、CentOS7では systemctl status dovecot -l で下記のWarningが出るためです。 (2022・1・20更新)CentOS7では下記Warningが出ますが問題ないようでした。

config: Warning: Obsolete setting in /etc/dovecot/dovecot.conf:25: 'imaps' protocol can no longer be specified (use protocols=imap).
config: Warning: Obsolete setting in /etc/dovecot/dovecot.conf:25: 'pop3s' protocol can no longer be specified (use protocols=pop3).

ルーターの993,995ポート開放、firewalld設定、dovecot 再起動してステータスを確認

# firewall-cmd --remove-service=imap --permanent
# firewall-cmd --remove-service=pop3 --permanent
# firewall-cmd --add-service=imaps --permanent
# firewall-cmd --add-service=pop3s --permanent
# firewall-cmd --reload

# systemctl restart dovecot
# systemctl status dovecot

アカウントを追加してdoveadm pw -s コマンドで生成してハッシュ化されたパスワード,gid,uid Maildirをその都度、ユーザー情報に追加していきます。

# useradd -s /sbin/nologin testuser
# passwd testuser
# saslpasswd2 -u mail.stuffy.site -c testuser
# doveadm pw -s CRAM-MD5
Enter new password:
Retype new password:
/etc/dovecot/passwd
testuser@mail.stuffy.site:{CRAM-MD5}aabbccdd009988ee:1002:1002:::::Maildir:/home/testuser/Maildir

Thunderbirdのセットアップ

設定項目 パラメーター
ユーザー testuser@mail.stuffy.site
パスワード ●●●●●●●●●●●
ホスト名 mail.stuffy.site
暗号化 TLS
暗号方式 暗号化されたパスワード

メールの送受信ができることを確認します。

『Thunderbirds are GO!』

GNOMEデスクトップGUIのメールアプリEvolutionをインストール

# yum install evolution

EvolutionのPOP CRAM-MD5の設定

EvolutionのSMTP サーバー認証,CRAM-MD5の設定

Evolution(2号)で送受信できることを確認します。

Microsoft Outlook で同様に設定してみます。

Outlook(3号)、確認できました。

お疲れ様でした。

上手くいかないときは、ログ /var/log/maillog を確認しよう!

# postconf debug_peer_level=4
# tail -n 100 /var/log/maillog | grep dovecot

# postconf debug_peer_list="" ←元に戻す

参考書:CentOS 8実践ガイド[サーバ構築編] | Amazon.co.jp

最後までお読み下さりありがとうございました。

同じカテゴリーの記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です