sendmailのインストール
訳あってpostfixではなくsendmailでメールを運用しているのでpostfixをアンインストールしてsendmailをインストール。
$ sudo yum remove postfix
$ sudo yum install sendmail
smf-spfのインストール
こちらを参照させてもらいました。
http://server-setting.info/centos/sendmail-smf-spf-install.html
$ sudo wget http://www.city-fan.org/ftp/contrib/yum-repo/city-fan.org-release-1-13.rhel7.noarch.rpm
$ sudo rpm -import http://www.city-fan.org/ftp/contrib/yum-repo/CITY-FAN.ORG-GPG-KEY
$ sudo rpm -Uvh city-fan.org-release-1-13.rhel7.noarch.rpm
参照先ページにも記述されている通り、/etc/yum.repos.d の city-fan.org.repo のenabled=1をenabled=0にしてupdate時にこちらのパッケージがインストールされないようにし、--enablerepoオプションでインストール。
$ sudo yum --enablerepo=city-fan.org install smf-spf
sendmail.cfの作成
/usr/share/doc/smf-spf-2.0.2 のreadmeの記述にしたがって/etc/mail/sendmail.mcに以下のエントリを追加。
define(`confMILTER_MACROS_HELO', confMILTER_MACROS_HELO`, {verify}')dnl
INPUT_MAIL_FILTER(`smf-spf', `S=unix:/run/smfs/smf-spf.sock, T=S:30s;R:1m')dnl
さらにメール中継を有効化。
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
↓
dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
DNS等で自ホストのFQDNを取得出来ない場合、自ホストのFQDNをsendmail.cfに直に設定します。1
define(`confDOMAIN_NAME', `myhost.mydomain.jp')dnl
sendmail.cf作成
# m4 sendmail.mc > sendmail.cf
access.dbやrelay-domainsも適宜設定します。
spf起動
$ sudo systemctl restart sendmail
$ sudo systemctl start smf-spf
selinux対策
ログを見ると/run/smfs/smf-spf.sockファイルへのアクセスに"Permission Denied"が発生するので/var/log/audit.logを適当にgrepしてポリシーを作成。2
# grep smf-spf /var/log/audit/audit.log > audit-smfpsf.txt
# cat audit-smfpsf.txt | audit2allow -M sendmail-smfspf
# semodule -i sendmail-smfspf.pp
上記の処置後もPermission Deniedが発生するので以下を実施
# grep spf.sock /var/log/audit/audit.log > sendmail-spfsock.txt
# cat sendmail-spfsock.txt | audit2allow -M sendmail-spfsock
# semodule -i sendmail-spfsock.pp
今度はPermission Deniedは発生しなくなりました。
-
詳細はこちらのドキュメント https://www.jpcert.or.jp/ed/2001/ed010002.txt の「VI. sendmail のテスト」-「(2) ホスト名が正しく取得できていることの確認」をご覧下さい。 ↩
-
別のホストでのセットアップ時には発生しませんでした。原因はよく判りません。 ↩