メールサーバの構築 #4

Tech (Old)

細かいもの。

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

コメント

タイトルとURLをコピーしました