smf-spf をインストールする
smf-spf の rpm は、通常のリポジトリにはありません。
smf-spf の rpm は、http://www.city-fan.org/ で公開されています。
そのため、まずは、city-fan.org で公開されているリポジトリをインストールするところから始めます。
city-fan.org リポジトリをインストールする
city-fan.org リポジトリは、無効にしておく
city-fan.org リポジトリは、正式なところでもないので、間違って変なものをインストールしてしまうと面倒です。常に無効にしておきます。使いたい時は、yum のパラメータに–enablerepo を指定して使うようにしておきます。
/etc/yum.repos.d/city-fan.org.repo
[city-fan.org]
name=city-fan.org repository for Red Hat Enterprise Linux (and clones) $releasever ($basearch)
mirrorlist=http://mirror.city-fan.org/ftp/contrib/yum-repo/mirrorlist-rhel$releasever
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-city-fan.org
...
|
smf-spf をインストールする
$ yum -y --enablerepo=city-fan.org install smf-spf
Loading mirror speeds from cached hostfile
* base: ftp.nara.wide.ad.jp
* city-fan.org: nervion.us.es
* extras: ftp.nara.wide.ad.jp
:
Complete!
$
|
smf-spf を利用するように sendmail.mc を編集する
smf-spf を sendmailで利用するためには、MILTER が組み込まれていないといけません。通常、CentOS , Scientific Linux で提供されている Sendmailは、既に組み込まれています。
sendmailに組み込まれているかどうか確認するためには、以下のようにコマンドで確認することができます。
$ sendmail -d0.10
Version 8.13.8
Compiled with: DNSMAP HESIOD HES_GETMAILHOST LDAPMAP LOG MAP_REGEX
MATCHGECOS MILTER MIME7TO8 MIME8TO7 NAMED_BIND NETINET NETINET6
NETUNIX NEWDB NIS PIPELINING SASLv2 SCANF SOCKETMAP STARTTLS
TCPWRAPPERS USERDB USE_LDAP_INIT
:
|
上記のようにMILTERが含まれていればOKです。もし含まれていないようなら、再インストールするか、再構築してMILTERが組み込まれた状態にしましょう。
/etc/mail/sendmail.mc を以下のように追加します。
...
define(`confMILTER_MACROS_HELO', confMILTER_MACROS_HELO`, {verify}')dnl
INPUT_MAIL_FILTER(`smf-spf', `S=unix:/var/run/smfs/smf-spf.sock, T=S:30s;R:1m')dnl
...
|
編集を終えたら、cfファイルを作成します。
$ m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
|
smf-spf を起動し、sendmail を再起動する
全ての設定を終えたら、smf-spf を起動し、sendmail を再起動します。
$ /etc/init.d/smf-spf start
smf-spf を起動中: [ OK ]
$ /etc/init.d/sendmail restart
sendmail を停止中: [ OK ]
sendmail を起動中: [ OK ]
$ chkconfig smf-spf on
|
最後にシステムの再起動があってもsmf-spf が自動で起動するようにchkconfigで設定しておきましょう。
Yahoo!などのフリーメールからメールを送信してSPF認証を確認してみる
Yahoo!などのフリーメールからメールを送信してみましょう。
受信したメールのヘッダ情報に以下のような情報が追加されていればSPF認証が実施されています。
X-SPF-Scan-By: smf-spf v2.0.2 - http://smfs.sf.net/
Received-SPF: Pass (mail.exmaple.com: domain of test@yahoo.co.jp designates 183.79.28.116 as permitted sender) receiver=mail.exmaple.com; client-ip=183.79.28.116; envelope-from=<test@yahoo.co.jp>; helo=web100414.mail.kks.yahoo.co.jp;
|
smf-spf をカスタマイズする
smf-spf の設定には、
/etc/mail/smfs/smf-spf.conf
の編集を行います。
デフォルトでは、以下のような設定になっています。
# smf-spf configuration file v2.0.2 (it's read at start)
#
# Whitelist by a sender IP address
#
# The syntax is an IP address followed by a slash
# and a CIDR netmask (if the netmask is omitted, /32 is assumed)
#
WhitelistIP 127.0.0.0/8
WhitelistIP 10.0.0.0/8
WhitelistIP 172.16.0.0/12
WhitelistIP 192.168.0.0/16
# Whitelist by a sender PTR record (reverse DNS record)
#
# Performs a case insensitive substring match
#
#WhitelistPTR .friendlydomain.tld
#WhitelistPTR friendlyhost.friendlydomain.tld
# Whitelist by an envelope sender e-Mail address
#
# Performs a case insensitive substring match
#
#WhitelistFrom friend@
#WhitelistFrom @friendlydomain.tld
#WhitelistFrom friend@friendlydomain.tld
# Whitelist by an envelope recipient e-Mail address
#
# Performs a case insensitive substring match
#
#WhitelistTo postmaster@
#WhitelistTo @yourspamloverdomain.tld
#WhitelistTo spamlover@yourdomain.tld
# Refuse e-Mail messages at SPF Fail results (RFC-4408)
#
# Default: on
#
#RefuseFail on # (on|off)
RefuseFail off
# Subject tagging of e-Mail messages at SPF SoftFail
# and Fail (if RefuseFail set to off) results
#
# Default: on
#
#TagSubject on # (on|off)
# Subject tagging string
#
# Default: [SPF:fail]
#
#Tag [SPF:fail]
# Build a standard Received-SPF: header
#
# Default: on
#
#AddHeader on # (on|off)
# Quarantine of e-Mail messages at SPF SoftFail
# and Fail (if RefuseFail set to off) results
#
# Default: off
#
#Quarantine off # (on|off)
# Quarantine mailbox
#
# Default: postmaster
#
#QuarantineBox postmaster
#QuarantineBox spambox@yourdomain.tld
# In-memory cache engine TTL settings
#
# The time is given in seconds, except if a unit is given:
# m for minutes, h for hours, and d for days
# Specify zero to disable caching
#
# Default: 1h
#
#TTL 1h
# Run as a selected user (smf-spf must be started by root)
#
# Default: smfs
#
#User smfs
# Socket used to communicate with Sendmail daemon
#
# Default: unix:/var/run/smfs/smf-spf.sock
#
#Socket unix:/var/run/smfs/smf-spf.sock
# Facility for logging via Syslog daemon
#
# Default: mail
#
#Syslog mail # (daemon|mail|local0...local7)
|
WhitelistIP
SPF認証を行わないIPアドレスを設定します。
連携しているメールサーバーなどがあれば、ここにIPアドレスを指定すると良いです。
WhitelistPTR
SPF認証を行わないホスト名(一部でも可)を設定します。
WhitelistFrom
SPF認証を行わない送信者メールアドレス(一部でも可)を設定します。
WhitelistTo
SPF認証を行わない受信者メールアドレス(一部でも可)を設定します。
RefuseFail
SPF認証で Fail となった場合の対処。ON拒否 , offそのまま受信
TagSubject
SPF認証で Fail or SoftFail となった場合、サブジェクトへ情報を付加するか否かフラグ。ON付加する , off付加しない
Tag
TagSubject on 時の文字列。デフォルト [SPF:fail] がサブジェクトに付加されます。
AddHeader
ヘッダ情報に Received-SPF: を付加するか否かフラグ。ON付加する , off付加しない
Quarantine
SPF認証で Fail or SoftFail となった場合、メールを隔離するか否かフラグ。ON隔離する , off隔離しない
QuarantineBox
Quarantine on 時の隔離先メールボックス。
TTL
TTLのキャッシュ時間。
User
smf-spf のrun ユーザ。(smf-spfはrootによって起動される必要があります)
Socket
smf-spf のSendmailと通信するためのソケット。
Syslog
Syslogのファシリティ(ログIDのようなもの)。
どうでしょうか、Sendmail に SPF認証機能を設定するには、簡単だと思います。
spamassassinも良いのですが、結局、spamassassinは、スパムかもしれない・・・と判定するだけで、メール受信が多ければ負荷もそれなりにかかりますから、
できれば、避けたいと思って、色々探してみると日本ではsid-milterが有名みたいですが、海外ではsmf-spfが有名っぽい・・・ので、備忘録をかねてインストール手順を書いてみました。
SPF認証だけでスパムかどうか判断するのは、危険ですが、Fail判定は、smf-spfを含めた設定の誤りで無い限り、スパムの可能性大です。
また、HELO情報もくっついてますから、本当のスパムのHELOの特徴がよくわかって助かります。まだ、今からSPFを設定するという方は、smf-spfの選択肢も有りだと思います。
コメントを投稿 :