細かいもの。
fail2ban
sudo apt install -y fail2ban
sudo vi /etc/fail2ban/jail.d/postfix.conf
sudo vi /etc/fail2ban/jail.d/dovecot.conf
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
あまりに認証エラーがすごいので fail2ban をインストール。
postfix-sasl と dovecot にしかける。
/etc/fail2ban/jail.d/postfix-sasl.conf
[postfix-sasl]
enabled = true
bantime = 1y
findtime = 24h
maxretry = 3
/etc/fail2ban/jail.d/dovecot.conf
[dovecot]
enabled = true
bantime = 1y
findtime = 24h
maxretry = 3
smtpd_banner の変更
/etc/postfix/main.cf
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
↓
smtpd_banner = $myhostname ESMTP unknown
VRFY コマンドの禁止
/etc/postfix/main.cf
↓
disable_vrfy_command = yes
HELO コマンド必須
/etc/postfix/main.cf
↓
smtpd_helo_required = yes
SPF Policy エージェントのインストール・設定
$ sudo apt install -y postfix-policyd-spf-python
$ sudo vi /etc/postfix/master.cf
$ sudo vi /etc/postfix/main.cf
$ sudo systemctl restart postfix
送信元の SPF を確認する。
/etc/postfix/master.cf
↓
policyd-spf unix - n n - 0 spawn
user=policyd-spf argv=/usr/bin/policyd-spf
/etc/postfix/main.cf
↓
policyd-spf_time_limit = 3600
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
check_policy_service unix:private/policyd-spf
DKIM の設定
OpenDKIM のインストール・設定
$ sudo apt install -y opendkim opendkim-tools
$ sudo vi /etc/group
$ sudo vi /etc/opendkim.conf
OpenDKIM のインストールと設定。
ユーザ postfix を opendkim グループに追加する。
/etc/opendkim.conf の編集。
ログ出力を詳細にする。
Domain と KeyFile、Selector の行はコメントのままにしておく。
Mode と SubDomains の行をコメント解除。AutoRestart と AutoRestartRate、Background、DNSTimeout、SignatureAlgorithm の行を追加。
KeyTable と SigningTable、ExternalIgnoreList、InternalHosts の行を追加。
/etc/group
opendkim:x:126:
↓
opendkim:x:126:postfix
/etc/opendkim.conf
#LogWhy no
↓
LogWhy yes
Canonicalization relaxed/simple
#Mode sv
#SubDomains no
OversignHeaders From
↓
Canonicalization relaxed/simple
Mode sv
SubDomains no
OversignHeaders From
AutoRestart yes
AutoRestartRate 10/1M
Background yes
DNSTimeout 5
SignatureAlgorithm rsa-sha256
↓
KeyTable refile:/etc/opendkim/key.table
SigningTable refile:/etc/opendkim/signing.table
ExternalIgnoreList /etc/opendkim/trusted.hosts
InternalHosts /etc/opendkim/trusted.hosts
Signing Table・Key Table・Trusted Hosts ファイルの作成
$ sudo mkdir -p /etc/opendkim/keys
$ sudo chown -R opendkim:opendkim /etc/opendkim
$ sudo chmod go-rw /etc/opendkim/keys
$ sudo vi /etc/opendkim/signing.table
$ sudo vi /etc/opendkim/key.table
$ sudo vi /etc/opendkim/trusted.hosts
Signing Table・Key Table・Trusted Hosts ファイルを作成する。
/etc/opendkim/signing.table の 2 行目はサブドメインの処理のため。
/etc/opendkim/trusted.hosts の最終行はドメイン名の前にアスタリスクを追加しない(*.hoge.com ではない)。 .hoge.com のようにドメイン名の前に「.」がある状態にする。
/etc/opendkim/signing.table
*@hoge.com default._domainkey.hoge.com
*@*.hoge.com default._domainkey.hoge.com
/etc/opendkim/key.table
default._domainkey.hoge.com hoge.com:default:/etc/opendkim/keys/hoge.com/default.private
/etc/opendkim/trusted.hosts
127.0.0.1
localhost
.hoge.com
秘密鍵・公開鍵のペアの作成
$ sudo mkdir /etc/opendkim/keys/hoge.com
$ sudo opendkim-genkey -b 2048 -d hoge.com -D /etc/opendkim/keys/hoge.com -s default -v
$ sudo chown opendkim:opendkim /etc/opendkim/keys/hoge.com/default.private
$ sudo chmod 600 /etc/opendkim/keys/hoge.com/default.private
DKIM の仕組みとしては、送信メッセージに署名して、受信メッセージを検証するというもの。署名用の秘密鍵と検証用の公開鍵を生成する(公開鍵は DNS で公開)。
ファイルのパーミッションを設定する。
公開する公開鍵を DNS サーバに設定
DNS サーバで TXT レコードを作成して、/etc/opendkim/keys/hoge.com/default.txt の内容を設定する。
Postfix から OpenDKIM へ接続できるように設定
Postfix は Unix ソケットで OpenDKIM と通信するが、Postfix の SMTP daemon はジェイル内で実行されているので /var/spool/postfix の中にソケットファイルをつくり、それを参照するようにする。
$ sudo mkdir /var/spool/postfix/opendkim
$ sudo chown opendkim:postfix /var/spool/postfix/opendkim
$ sudo vi /etc/opendkim.conf
$ sudo vi /etc/default/opendkim
$ sudo vi /etc/postfix/main.cf
ディレクトリを作成し、パーミッションを設定。
/etc/opendkim.conf でファイルの生成場所を変更。
/etc/default/opendkim も同様に変更。
/etc/postfix/main.cf を修正して、Postfix で DKIM を処理するよう設定する。
/etc/opendkim.conf
Socket local:/run/opendkim/opendkim.sock
↓
Socket local:/var/spool/postfix/opendkim/opendkim.sock
/etc/default/opendkim
SOCKET=local:$RUNDIR/opendkim.sock
↓
SOCKET="local:/var/spool/postfix/opendkim/opendkim.sock"
/etc/postfix/main.cf
↓
milter_default_action = accept
milter_protocol = 6
smtpd_milters = local:opendkim/opendkim.sock
non_smtpd_milters = $smtpd_milters
コメント