※submissionポートから入ってきたメールにdkim/domainkeys署名をするよう、postfixとdkimproxyを組み合わせる。
●鍵の生成とDNS RR
セレクタはdefaultにした。
udpで運べるクエリの最大値が512byteまでなので、それに収まるようにするため暗号強度を1024bitにしている。
#----------
mkdir -m 750 /etc/domainkeys
chown root:postfix /etc/domainkeys
cd /etc/domainkeys
openssl genrsa -out default.key 1024
openssl rsa -in default.key -pubout -out default.pub
chmod 640 default.key
chgrp postfix default.key
#----------
※DNSゾーン登録例
default.pubの内容を1行にしたものをpに入れる。
#----------
default._domainkey TXT "v=DKIM1; g=*; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDNK+8jSLZXFQHg12iKMH2M+tdGUfL1hlnSwSXL5V1ksrG52cxCJWWCJz1iwhxTrc9E4Ex2AXy7fxhmF62zNmBil2EWTM7h5tglLwIt4Z1ORATteHT7r+bxZykl+5hASw1IRIrkC62nrKlMcXLt6K1aDnDXgkzfJN+Q8yDyjBdJeQIDAQAB" ;
_adsp._domainkey TXT "dkim=unknown"
#----------
●dkimproxyインストール
▼ソースダウンロード
#----------
wget 'http://downloads.sourceforge.net/project/dkimproxy/dkimproxy/1.4.1/dkimproxy-1.4.1.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fdkimproxy%2Ffiles%2Fdkimproxy%2F1.4.1%2F&ts=1295958608&use_mirror=jaist'
#----------
▼インストール
perl-Mail-DKIMは標準リポジトリで提供されているので楽。
#----------
yum install perl-Mail-DKIM
tar xzf ../tarball/dkimproxy-1.4.1.tar.gz
cd dkimproxy-1.4.1
./configure --prefix=/usr/local/dkimproxy
make install
cp -a sample-dkim-init-script.sh /etc/init.d/dkimproxy
chmod 755 /etc/init.d/dkimproxy
chkconfig dkimproxy on
useradd -d /usr/local/dkimproxy -M -s /sbin/nologin dkimp
cd /usr/local/dkimproxy/etc
cp dkimproxy_out.conf.example dkimproxy_out.conf
#----------
●設定
設定を見ればわかるが、ドメイン毎にキーを変えることができない模様。
たまに空メールを投げる程度なら、起動デーモン数やスペアサーバ数は1で良いと思う。
▼/usr/local/dkimproxy/etc/dkimproxy_out.conf(diff -urN dkimproxy_out.conf.example dkimproxy_out.conf)
#----------
--- dkimproxy_out.conf.example 2011-08-22 11:33:47.187956225 +0900
+++ dkimproxy_out.conf 2011-08-22 11:44:41.065967438 +0900
@@ -5,20 +5,20 @@
relay 127.0.0.1:10028
# specify what domains DKIMproxy can sign for (comma-separated, no spaces)
-domain example.org
+domain example1.jp, example2.jp
# specify what signatures to add
signature dkim(c=relaxed)
signature domainkeys(c=nofws)
# specify location of the private key
-keyfile /full/path/to/private.key
+keyfile /etc/domainkeys/default.key
# specify the selector (i.e. the name of the key record put in DNS)
-selector selector1
+selector default
# control how many processes DKIMproxy uses
# – more information on these options (and others) can be found by
# running `perldoc Net::Server::PreFork’.
-#min_servers 5
-#min_spare_servers 2
+min_servers 1
+min_spare_servers 1
#———-
▼/etc/postfix/master.cf(追加)
#----------
submission inet n - n - - smtpd
-o smtpd_etrn_restrictions=reject
-o smtpd_sasl_auth_enable=yes
-o content_filter=dksign:[127.0.0.1]:10027
-o receive_override_options=no_address_mappings
-o smtpd_client_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
dksign unix - - n - 4 smtp
-o smtp_send_xforward_command=yes
-o smtp_discard_ehlo_keywords=8bitmime,starttls
127.0.0.1:10028 inet n - n - 10 smtpd
-o content_filter=
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o smtpd_authorized_xforward_hosts=127.0.0.0/8
#----------
●サービス提供開始
▼コマンド
#----------
/etc/init.d/dkimproxy start
/etc/init.d/postfix restart
#----------