同サイトのページだが探しにくいのでメモ。
SPF(Sender Policy Framework) : 迷惑メール対策委員会
SPFの歴史的背景や、SPF設定時のプロパティの解説や記述例。
間違いから学ぶSPFレコードの正しい書き方 : 迷惑メール対策委員会
SPFレコードを設定する際に間違いやすい例を参考に解説。
Trackback Uri
同サイトのページだが探しにくいのでメモ。
SPF(Sender Policy Framework) : 迷惑メール対策委員会
SPFの歴史的背景や、SPF設定時のプロパティの解説や記述例。
間違いから学ぶSPFレコードの正しい書き方 : 迷惑メール対策委員会
SPFレコードを設定する際に間違いやすい例を参考に解説。
Trackback Uri
SpamAssasinのみをインストールしたくなったのでメールサーバ再構築のついでに試してみる。メールサーバ構築のまとめ でPostfix+MySQL+postfixadminは構築済みとして想定しています。そちらではウィルスチェックも導入しているため今回はスパムチェックのみの導入。
また、学習機能があるようなので試してみる。スパム判定の精度が高まるみたい。
コレに合わせて postfixadmin +procmailな環境でメールディレクトリの自動作成・削除 のメールディレクトリ作成スクリプトに .Spam を作るコマンドを追加。
yum install spamassassin
/etc/procmailrc を新規作成する。SpamAssassinの起動条件は参考ブログより引用。
# vi /etc/procmailrc SHELL=/bin/bash PATH=/usr/bin:/bin DEFAULT=/mail/$DOMAIN/$USER\@$DOMAIN/ LOCKFILE=/mail/procmail.lock LOGFILE=/mail/procmail.log # ログ出力先 #VERBOSE=ON # 詳細ログ出力 # メールヘッダー中に「 X-Spam-*** 」の記述がなければ spamassassin を起動します :0fw *!^X-Spam.* |spamassassin # メールヘッダー中に「 X-Spam-Status: Yes 」の記述があれば、「 .Spam 」ディレクトリにメールを格納します :0 * ^X-Spam-Status: Yes $DEFAULT/.Spam/
ログの肥大化を防ぐため、ログローテーション設定ファイル新規作成する。
# vi /etc/logrotate.d/procmail /mail/procmail.log { missingok nocreate notifempty }
main.cf の設定
# vi /etc/postfix/main.cf ....最終行付近 # virtual_transport = virtual ←コメントアウト virtual_transport = procmail ←追記 procmail_destination_recipient_limit = 1 ←追記
master.cf の設定
# vi /etc/postfix/master.cf 最終行に追記 procmail unix - n n - - pipe flags=R user=vuser argv=/usr/bin/procmail -t -m USER=${user} DOMAIN=${nexthop} /etc/procmailrc
SpamAssassin起動
# service spamassassin start
SpamAssassin自動起動設定
# chkconfig spamassassin on
Postfixを再起動して設定を有効化
# /etc/rc.d/init.d/postfix restart
スパムメールの判定制度を上げるために学習する事が出来る。また、迷惑メールではないメールの学習も可能。
# /usr/bin/sa-learn --spam /mail/*/*/.Spam/cur
# /usr/bin/sa-learn --ham /mail/*/*/cur
参考ブログではcronに設定していたけど、Spamメールを確認してから手動でコマンドを実行するようにする。~/binにコマンドスクリプトを作成してsudoで実行できるようにしておく。
$ mkdir ~/bin $ vi ~/bin/spam-learn #!/bin/sh /usr/bin/sa-learn --spam /mail/*/*/.Spam/cur # スパムメール保存ディレクトリの中身を強制的に消去してよいのなら以下の記述を追加 /bin/rm -f /mail/*/*/.Spam/cur/* echo 'All Spam Mail Deleted.' $ chmod 700 ~/bin/spam-learn $ sudo chown root:root ~/bin/spam-learn
メーラーでSpamフォルダに迷惑メールしか無いと確認してから以下のコマンドで学習&スパムメール削除
$ sudo spam-learn
入れなおしたらかなりの確率でスパムメールを排除してくれる!
参考:
Trackback Uri
メールサーバー間通信内容暗号化(OpenSSL+Postfix+Dovecot) – CentOSで自宅サーバー構築 を参考にサーバー証明書を作成
# cd /etc/pki/tls/certs/ # make mail.pem umask 77 ; \ PEM1=`/bin/mktemp /tmp/openssl.XXXXXX` ; \ PEM2=`/bin/mktemp /tmp/openssl.XXXXXX` ; \ /usr/bin/openssl req -utf8 -newkey rsa:2048 -keyout $PEM1 -nodes -x509 -days 365 -out $PEM2 -set_serial 0 ; \ cat $PEM1 > mail.pem ; \ echo "" >> mail.pem ; \ cat $PEM2 >> mail.pem ; \ rm -f $PEM1 $PEM2 Generating a 2048 bit RSA private key ......................................................................................................+++ ............+++ writing new private key to '/tmp/openssl.h27273' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [GB]:JP State or Province Name (full name) [Berkshire]:Gunma Locality Name (eg, city) [Newbury]:Maebashi Organization Name (eg, company) [My Company Ltd]:clicktxcloud.com Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:mail.clicktxcloud.com Email Address []:mail@clicktxcloud.com
smtpd_use_tls = yes #最終行に追記 smtpd_tls_cert_file = /etc/pki/tls/certs/mail.pem smtpd_tls_key_file = /etc/pki/tls/certs/mail.pem smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache
submission inet n - n - - smtpd ←コメント削除 -o smtpd_enforce_tls=yes ←コメント削除 -o smtpd_sasl_auth_enable=yes ←コメント削除 -o smtpd_client_restrictions=permit_sasl_authenticated,reject ←コメント削除 smtps inet n - n - - smtpd ←コメント削除 -o smtpd_tls_wrappermode=yes ←コメント削除 -o smtpd_sasl_auth_enable=yes ←コメント削除 -o smtpd_client_restrictions=permit_sasl_authenticated,reject #628 inet n - n - - qmqpd pickup fifo n - n 60 1 pickup cleanup unix n - n - 0 cleanup qmgr fifo n - n 300 1 qmgr #qmgr fifo n - n 300 1 oqmgr tlsmgr unix - - n 1000? 1 tlsmgr ←コメント削除
$ openssl s_client -starttls smtp -crlf -connect xxx.xxx.xxx.xxx:587 CONNECTED(00000003) ... SSL-Session: Protocol : TLSv1 Cipher : DHE-RSA-AES256-SHA Session-ID: 9AE082BD79AE4029D5AD48BCCA63C3E6970FE3D3617C2EE98586AB7B331A4332 Session-ID-ctx: Master-Key: 64F761C1EA5B4261A67DDBB625A2D04AD88586CD21B0D35F4E62C06C1FDE481EA21BEED6EDCD5548B4DCBEF0A6399881 Key-Arg : None PSK identity: None PSK identity hint: None SRP username: None Compression: 1 (zlib compression) Start Time: 1394449493 Timeout : 300 (sec) Verify return code: 10 (certificate has expired) --- 250 DSN
# Disable SSL/TLS support. ssl_disable = no ←コメント削除 # PEM encoded X.509 SSL/TLS certificate and private key. They're opened before # dropping root privileges, so keep the key file unreadable by anyone but # root. Included doc/mkcert.sh can be used to easily generate self-signed # certificate, just make sure to update the domains in dovecot-openssl.cnf #ssl_cert_file = /etc/pki/dovecot/certs/dovecot.pem #ssl_key_file = /etc/pki/dovecot/private/dovecot.pem ssl_cert_file = /etc/pki/tls/certs/mail.pem ←追記 ssl_key_file = /etc/pki/tls/certs/mail.pem ←追記
Postfix TLS サポート
Postfix+MySQL+Postfix AdminによるバーチャルSMTPサーバの構築(CentOS4.x編)
Trackback Uri
とりあえずwebアプリ制作において開発環境からメール送信できればいいのでそれなりの設定です。
本格的なメールサーバーとしては運用できませんのであしからず。
主要プロバイダを使っている場合はほぼ対策しなくてはメールが送れません。なぜならプロバイダが25番ポートでの接続を遮断してしまうからです。25番ポートを使った通信が出来ません。
対策としては契約しているプロバイダ経由でメールを送ります。
OP25Bの確認
OP25B(Outbound Port 25 Blocking)対策 – CentOSで自宅サーバー構築
$ telnet smtp.gmail.com 25 Trying 74.125.25.108... telnet: connect to address 74.125.25.108: Operation timed out Trying 74.125.25.109...
こうなったらOP25Bの影響を受けています。
⌘(command)+. あるいは control+c で止めましょう。
587番ポートなら接続可能です。
$ telnet smtp.gmail.com 587 Trying 74.125.25.108... Connected to gmail-smtp-msa.l.google.com. Escape character is '^]'. 220 mx.google.com ESMTP n11sm6774215pby.67 quit
プロバイダの…と書いていますが、自サーバのメールサーバ使った設定にしてしまいます。
※プロバイダ経由の場合の設定ははココが参考になると思います。
$ sudo vi /etc/postfix/sasl_passwd [smtp.clicktx.jp]:587 myname@clicktx.jp:password $ sudo postmap /etc/postfix/sasl_passwd
※ /etc/postfix/sasl_passwd.db というファイルが出来ます。
postfixの設定ファイルmain.cfを編集します。
$ sudo vi /etc/postfix/main.cf
該当箇所に追記or修正
relayhost = [smtp.clicktx.jp]:587
最終行に追記
# Enable SASL authentication in the Postfix SMTP client. smtp_sasl_auth_enable=yes smtp_sasl_password_maps=hash:/etc/postfix/sasl_passwd smtp_sasl_security_options= smtp_sasl_mechanism_filter = plain
postfixの起動またはリロード
$ sudo postfix start
$ sudo postfix reload
$ mail xxx@hoge.com(宛先) Subject: テストメール テストメール .
参考
Trackback Uri
こんなエントリ(ネットショップ運営者必見?迷惑メール扱いを回避する手順 :: drk7jp )があるので、とりあえずDKIMを導入してみる。
DKIMを導入するに以前は dkim-milter を使うのが一般的だったようだけど、最近では OpenDKIM を使うようだ。
参考:
※rpmforgeまたはepelリポジトリが必要。
$ sudo yum install opendkim ============================================================================================================== Package Arch Version Repository Size ============================================================================================================== Installing: opendkim i386 2.5.2-1.el5.rf rpmforge 258 k Installing for dependencies: libopendkim i386 2.5.2-1.el5.rf rpmforge 159 k Transaction Summary ============================================================================================================== Install 2 Package(s) Upgrade 0 Package(s)
ドメインごとに保管場所を作成する必要があるのでまずは保管場所を作る。
$ sudo mkdir /etc/opendkim/keys/clicktx.jp
$ sudo opendkim-genkey -D /etc/opendkim/keys/clicktx.jp/ -d clicktx.jp -s default
default.private default.txt という鍵ペアが出来る。
default.txt の内容(TXTレコード)をDNSに設定するのだけれど、バグがあるので注意。
元の内容
default._domainkey IN TXT "v=DKIM1;=rsa; p=MIGfMA...." ; ----- DKIM default for clicktx.jp
修正後の内容
default._domainkey IN TXT "v=DKIM1;k=rsa; p=MIGfMA...." ; ----- DKIM default for clicktx.jp
※ =rsa を k=rsa に直すこと。
うちはValueDomainのDNSサーバを使っているので、
txt default._domainkey v=DKIM1;k=rsa; p=MIGf...中略...IDAQAB
として設定する。
うちのDNSサーバは ns*.value-domain.com を使っているのでこの方法でいいみたいだけど、eNom「dns*.name-services.com」の場合は設定方法が違うみたいなので注意。
参考:Google Appsの「DKIM」をVALUE-DOMAINで設定する – 風見鶏の目
DNSが浸透してから行う必要がある。
nslookup コマンドで
$ nslookup -q=txt default._domainkey.clicktx.jp
Non-authoritative answer: *** Can't find default._domainkey.clicktx.jp: No answer
こんなんでたらまだ浸透していません。
TXTレコードが正しく引けるようなら秘密鍵の所有者を変更してopendkim が読み込めるようにする。
$ sudo chown -R opendkim:opendkim /etc/opendkim/keys
設定ファイル /etc/opendkim.conf
$ sudo vi /etc/opendkim.conf # Selects operating modes. Valid modes are s (signer) and v (verifier). Default is v. #Mode v Mode sv ←追記 sは送信時の署名、vは受信時の確認 # Gives the location of a private key to be used for signing ALL messages. # KeyFile /etc/opendkim/keys/default.private ←コメントアウト # Gives the location of a file mapping key names to signing keys. In simple terms, # this tells OpenDKIM where to find your keys. If present, overrides any KeyFile # setting in the configuration file. #KeyTable /etc/opendkim/KeyTable KeyTable refile:/etc/opendkim/KeyTable ←追記 # Defines a table used to select one or more signatures to apply to a message ba sed # on the address found in the From: header field. In simple terms, this tells # OpenDKIM how to use your keys. #SigningTable /etc/opendkim/SigningTable SigningTable refile:/etc/opendkim/SigningTable ←追記 # Identifies a set of "external" hosts that may send mail through the server as one # of the signing domains without credentials as such. ExternalIgnoreList refile:/etc/opendkim/TrustedHosts ←コメントを外す # Identifies a set internal hosts whose mail should be signed rather than verifi ed. InternalHosts refile:/etc/opendkim/TrustedHosts ←コメントを外す
KeyTable には、TXT フィールドとシグニチャをつけるドメイン、セレクタ、対応する秘密鍵を1行につき1ドメインずつ書いていく。
ドメインに対する秘密鍵を指定いてあげるのかな。
$ sudo vi /etc/opendkim/KeyTable default._domainkey.clicktx.jp clicktx.jp:default:/etc/opendkim/keys/clicktx.jp/default.private
SigningTable には、どのメールアドレスに対してはどの TXT フィールドを参照するかを指定する。ここではワイルドカードが使える。
ワイルドカードを使って ***@clicktx.jp のメールが参照するTXTレコードを指定してあげる。
$ sudo vi /etc/opendkim/SigningTable *@clicktx.jp default._domainkey.clicktx.jp
TrustedHosts には、DKIM シグニチャをつけるべきメールサーバをリストアップしておく。
との事。ローカルサーバだけでいいのかな?
デフォルトで 127.0.0.1 が指定してある。そのままでもおkの模様。
$ sudo vi /etc/opendkim/TrustedHosts 127.0.0.1
# opendkim起動
$ sudo /etc/rc.d/init.d/opendkim start
# 自動起動の設定
マシンを再起動した時に自動起動。
$ sudo /sbin/chkconfig opendkim on
main.cfの最終行に追記
$ sudo vi /etc/postfix/main.cf # DKIM smtpd_milters = inet:127.0.0.1:8891
Postfixを再起動
$ sudo /etc/rc.d/init.d/postfix restart
sa-test@sendmail.net へ空メールを送る。
DKIMだけじゃなく他のチェックもしてくれる。
Spamhausとかに登録されているとブラックリストに載っているよ!って弾かれます…。
ヘッダではなく本文に記載されます。
以下のようになっていればおk?
Authentication System: DomainKeys Identified Mail (DKIM)
Result: DKIM signature confirmed GOOD
Description: Signature verified, message arrived intact
Reporting host: services.sendmail.com
More information: http://dkim.org/
Sendmail milter: http://opendkim.org/
ドメインごとに用意しなくてはならないのかな?
自分で管理しているドメインならデフォルトのキーペアを設定して使い回してしまってもいいのかしら?
Filed under: CentOS5.x,postfix,インストールメモ
Trackback Uri
最近のコメント