はじめに
SMTP認証を行う方法は色々ある。
- Dovecot の SASL を使用 (たぶん、 PAM を使う。)
- Cyrus SASL を使用し、 PAM の認証情報を使う。
- Cyrus SASL を使用し、 Cyrus SASL 用のパスワードデータベースを用意する。
今回は、最後の方法を使用する。
総当たり攻撃を受けてもしパスワードが発覚したとしても、ユーザー名やパスワードを別のものにしておけば、他のサービスへの被害を抑えられるメリットがあるだろうという考え。
環境
OS: AlmaLinux release 9 (Rocky Linux release 8 での設定も付記する)
インストールとセットアップ
Cyrus SASLのライブラリをインストールする。 (`cyrus-sasl` は不要)
sudo dnf install cyrus-sasl-{lib,md5,plain}
予め、 Letsencrypt の証明書を取得しておき、
/etc/postfix/main.cf
に以下を設定する。
smtpd_tls_cert_file = /etc/letsencrypt/live/example.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/example.com/privkey.pem
smtpd_sasl_local_domain=$mydomain
smtpd_sasl_security_options=noanonymous
/etc/postfix/master.cf
に以下を設定する。
smtps inet n - n - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
/etc/sasl2/smtpd.conf
に以下を設定する。 (
mech_list
の設定は削除する。または、
cram-md5 digest-md5 plain login
を設定する。)
pwcheck_method: auxprop
ユーザーを追加し、パスワードを設定する。 (ユーザー名は適宜置き換えること。ドメイン名は
smtpd_sasl_local_domain
と同じものにする。)
なお、パスワードを変更するだけの場合、オプション
-c
を付けない。
sudo saslpasswd2 -c -u example.com user1
パスワードデータベースにグループ
sasl
を設定し、ユーザー
postfix
を所属させる。
sudo groupadd sasl
sudo groupmems -a postfix -g sasl
sudo chgrp sasl /etc/sasl2/sasldb2
sudo chmog g+r /etc/sasl2/sasldb2
Note: EL8 では、
/etc/sasldb2
にパスワードファイルが存在する。
設定をチェックし、問題なければ Postfix を再起動する。
sudo postfix check
sudo systemctl restart postfix
OpenSSL で確認する。 (接続時に
Verify return code: 0 (ok)
が表示され、
EHLO
に対して
250-AUTH DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
が帰ってきたらOK。)
openssl s_client -connect localhost:smtps
EHLO localhost
ファイアウォールを設定する。
sudo firewall-cmd --add-service smtps
sudo firewall-cmd --permanent --add-service smtps
0 件のコメント:
コメントを投稿