ラベル postfix の投稿を表示しています。 すべての投稿を表示
ラベル postfix の投稿を表示しています。 すべての投稿を表示

2024-11-04

PostfixにSMTP Authの設定を追加

はじめに

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

2016-03-16

PostfixサーバーからGmailへメールを配送するときの暗号化

このごろ, gmailへメールを送ると, 赤い鍵のマークとともに, 以下のような警告がでるようになった:
メールサーバからgmailへメールを送るときに, 暗号化されていないことを警告しているらしい.

Postfixでどのように設定すればよいか調べた所, 簡単だった. 以下の設定を追加するだけ (smtps_use_tlsではない.):

smtp_use_tls = yes
smtp_tls_CApath = /etc/ssl/certs/
ただし, 他のメールサーバが, 「TLS使えるよ」と言っているのにTLSハンドシェイクに失敗するような場合は, メール配送に失敗するとのこと. TLS関連の設定は難しい:-(
なお, この設定だけでは, DNSに間違った情報を入れられるような中間者攻撃には耐えられない.

余談だが, たいていのサイトはTLSに対応しているようなのだが, OCNは未対応だ.