ライン

ポイント:*

ライン

 はじめに

mail/sid-milter

 DKIMとくれば、次はSPF(Sender Policy Framwork)でしょう。
以前は対応していたものの、普及しなかったので外していましたが、OpenDKIMの導入したことだし、復活させます。
たぶん、半端にDNSには残っていたはずだし。

そんなメモ(備忘録)です。

 導入

まずは入れる

 細かいことは抜きに導入をしてみました。
※手抜きで申し訳ない。DKIMのページの焼き直しっぽい

 前回導入した際の同じく1.00版のまま。ついでに pkgでインストールもできない…。

# cd /usr/ports/mail/sid-milter
# make install clean

milterなんで、自分のsendmailの設定に加えて動かすことと、DNSにレコードを加えるだけで完了します。

まずは、sendmailの設定です。/etc/mail上にある 自分のホスト名.mc のファイルを編集します。

INPUT_MAIL_FILTER(`sid-filter', `S=local:/var/run/sid-filter')dnl
..
..
define(`confINPUT_MAIL_FILTERS', `sid-filter, dkim-filter, spamassassin, clmilter')dnl

のように、2行の追加です。2つ目の行は、milterプログラムがあれば追加しているのと思うので、この中に追加する形です。

# make cf install all restart
/usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/   /usr/share/sendmail/cf/m4/cf.m4 HOST.example.co.jp.mc > HOST.exmaple.co.jp.cf
install -m 444 HOST.exmaple.co.jp.cf /etc/mail/sendmail.cf
install -m 444 HOST.exmaple.co.jp.submit.cf /etc/mail/submit.cf
Restarting: sendmail sendmail-clientmqueue.

これでsendmail関連は終わりです。
/etc/rc.confに以下1行を加えます。

miltersid_enable="YES"

そしてデーモンを起動します。

# service milter-sid start
Starting miltersid.
# ps aux | grep sid-filter | grep -v grep
root     22214   0.0  0.1  20740   2260 ??  Is    7:12PM    0:00.00
  /usr/local/libexec/sid-filter -r 0 -t -l -p local:/var/run/sid-filter -P /var/run/sid-filter.pid
# ll /var/run/|grep sid-filter
srwxr-xr-x  1 root      wheel        0 May 18 19:12 sid-filter=
-rw-r--r--  1 root      wheel        6 May 18 19:12 sid-filter.pid

想定通りだったことが確認できました。

さて、DNSを確認。
以前に追加していたのは

IN      TXT     "v=spf1 a mx/28 mx:HOST.exmaple.co.jp ~all"

というものでした。

今回は、こんなにしました。

IN      TXT     "v=spf1 +ip4:210.230.199.80/28 +ptr:so-net.ne.jp include:_spf.google.com ~all"

更新反映させます。

# rndc reload

メールを出してみて(maillog内容)確認。

sm-mta[-]: -: Milter insert (1): header: Authentication-Results: HOST.example.co.jp; sender-id=pass
 header.from=foo@example.co.jp; auth=pass (LOGIN); spf=pass smtp.mfrom=foo@example.co.jp

みたく加わってOKになっていました。
ちょっと乱暴ですが、接続ISPのサブドメインであることでPASSにしています。

SpamAssassinは、DKIMを含めて有効に設定変更しました。
効果が出るのかはまだ見ていません。

 DMARC

 ここまで設定ができたら、DMARCのレコードも追加しておきます。

_dmarc          IN      TXT     "v=DMARC1; p=quarantine; pct=1"

のように設定してみました。1%の隔離実施という感じです。
pには、rejectも利用できますが、まずはquarantineからにします。

これまでと同じで、milterで実装します。

# pkg install opendmarc
Updating repository catalogue
The following 1 packages will be installed:

        Installing opendmarc: 1.2.0 [us-west]

The installation will require 589 kB more space

141 kB to be downloaded

Proceed with installing packages [y/N]:

 導入はあっさりです。/uar/local/etc/mail/opendmarc.confが設定ファイル。
サンプルからコピーして利用します。333行もある設定ファイルですが、grep -v '^#' opendmarc.conf | grep -v '^$'すると結果は0。
全部コメント行です。

AuthservID      HOST.exmaple.co.jp
BaseDirectory   /var/run/milteropendkim/
#ForensicReports         true
HistoryFile             /var/run/milteropendkim/opendmarc.dat
PidFile /var/run/milteropendkim/opendmarc.pid
Socket  local:/var/run/milteropendkim/opendmarc-socket
SoftwareHeader          true
Syslog          true

のようにしてみました。

権限不足を指摘されるため、rc.confにはOpenDKIMのディレクトリを流用してしまう設定にしようと思います。

opendmarc_enable="YES"
opendmarc_pidfile="/var/run/milteropendkim/opendmarc.pid"
opendmarc_socketspec="/var/run/milteropendkim/opendmarc-socket"

を加えました。

# service opendmarc start

そして、同様にsendmailの設定は、

INPUT_MAIL_FILTER(`opendmarc', `S=local:/var/run/milteropendkim/opendmarc-socket'')dnl
..
define(`confINPUT_MAIL_FILTERS', `sid-filter, dkim-filter, opendmarc, spamassassin, clmilter')dnl

のようにしました。make cf install restartで再起動させてエラーが出ていなければ有効になっています。
実際にテストしてみると、

opendmarc[-]: -: can't extract SPF address from Authentication-Results
opendmarc[-]: -: example.com fail

のようなエラー。なんでだろう。p=noneに変更して少し考えようと思います。

 …OpenDmarcの現行バージョンは使用に耐えられない感じ。16時から既に9回落ちている(exited on signal 11)し。
将来再度評価することにして、本番系からは除外しました。

Copyright © 1996,1997-2006,2007- by F.Kimura,