CentOS 6.2 でpostfixにopendkimを導入する。

CentOS 6.2 でpostfixにopendkimを導入する。
1)
epelにあるopendkimを利用するので、epelが使えない場合は
epelを使えるようにする。

具体的には、CentOS 6.2で64bitなら以下のようなコマンドを発行する。

wget http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-5.noarch.rpm
rpm -ivh epel-release-6-5.noarch.rpm

2)
yumを使ってopendkimを導入する。

yum -y install opendkim

3)
opendkim用のプライベートキーを用意する。
例えば、ドメインが hoge.co.jp とすると以下のようなコマンドを発行する。

mkdir /etc/opendkim/keys/hoge.co.jp
/usr/bin/opendkim-genkey -D /etc/opendkim/keys/hoge.co.jp/ -d hoge.co.jp -s default
chown -R opendkim:opendkim /etc/opendkim/keys
mv /etc/opendkim/keys/hoge.co.jp/default.private /etc/opendkim/keys/hoge.co.jp/default
4)
opendkimまわりの設定ファイルを修正する。
関係するのは、

/etc/opendkim.conf
/etc/opendkim/KeyTable
/etc/opendkim/TrustedHosts
/etc/opendkim/SigningTable

の4つのファイル。
/etc/opendkim.confの変更内容は以下のとおり。

Mode sv
#KeyFile /etc/opendkim/keys/default.private
KeyTable refile:/etc/opendkim/KeyTable
SigningTable /etc/opendkim/SigningTable
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts

/etc/opendkim/KeyTableの変更内容は以下のとおり。

default._domainkey.hoge.co.jp hoge.co.jp:default:/etc/opendkim/keys/hoge.co.jp/default

/etc/opendkim/TrustedHostsの変更内容は以下のとおり。

127.0.0.1
localhost
mail.hoge.co.jp
hoge.co.jp

/etc/opendkim/SigningTableの変更内容は以下のとおり。

hoge.co.jp default._domainkey.hoge.co.jp

5)
Postfixの設定も変更する。
/etc/postfix/main.cfに以下を追記する。

#opendkim
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept

6)
DNSの設定も変更する。

cat /etc/opendkim/keys/hoge.co.jp/default.txt

で表示される内容をDNSサーバに設定する。
可能なら、以下のようなDKIMポリシーも設定する。

_adsp._domainkey.example.com IN TXT “dkim=unknown”

7)
opendkimの開始とpostfixの再起動。

/etc/rc.d/init.d/opendkim start
/etc/rc.d/init.d/postfix restart
これで終わりです。
ついでに、上記の処理をシェルスクリプトにしてみました。
良かったら自己責任で使ってください。(^^;)
#!/bin/sh

#DNS
#DNS=hoge.co.jp

echo “—-> Start DKIM setting for ${DNS}”

####
# install epel
####
if [ ! -e /etc/yum.repos.d/epel.repo ]
then
echo ‘—-> Install epel’
OSFILE=`ls /etc -F | grep “release$\|version$”`
OS=`cat /etc/${OSFILE}`
MACHINE=`uname -m`

if [[ “$OS” =~ “CentOS release 6″ ]]; then
OSVER=”6″
RPM=”epel-release-6-5.noarch.rpm”
else
echo ‘—->fail’
exit;
fi

if [[ “$MACHINE” =~ “x86_64″ ]]; then
MACHINEVER=”x86_64″
else
MACHINEVER=”i386″
fi

EPELURL=”http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/${OSVER}/${MACHINEVER}/${RPM}”
wget $EPELURL
rpm -ivh $RPM
fi

###
# install opendkim
###
echo ‘—-> Install opendkim’
yum -y install opendkim

if [ ! -e /etc/opendkim/keys/${DNS}/default ]
then
mkdir /etc/opendkim/keys/${DNS}
/usr/bin/opendkim-genkey -D /etc/opendkim/keys/${DNS}/ -d ${DNS} -s default
chown -R opendkim:opendkim /etc/opendkim/keys
mv /etc/opendkim/keys/${DNS}/default.private /etc/opendkim/keys/${DNS}/default
fi

DKIM_CONF=/etc/opendkim.conf
KEY_TABLE=/etc/opendkim/KeyTable
TRUSTED_HOSTS=/etc/opendkim/TrustedHosts
SIGNING_TABLE=/etc/opendkim/SigningTable

POSTFIX_CONF=/etc/postfix/main.cf

echo ‘—-> Eidt opendkim.conf’
if [ -e $DKIM_CONF ]
then
if [ -e ${DKIM_CONF}.org ]
then
cp ${DKIM_CONF}.org ${DKIM_CONF}
else
cp ${DKIM_CONF} ${DKIM_CONF}.org
fi

sed -e ‘s/^Mode.*/Mode sv/’ \
-e ‘s/^KeyFile/#KeyFile/’ \
-e ‘s/^#KeyTable/KeyTable/’ \
-e ‘s/^#SigningTable/SigningTable/’ \
-e ‘s/^#ExternalIgnoreList/ExternalIgnoreList/’ \
-e ‘s/^#InternalHosts/InternalHosts/’ \
${DKIM_CONF} > ${DKIM_CONF}.tmp
cp ${DKIM_CONF}.tmp ${DKIM_CONF}
rm -f ${DKIM_CONF}.tmp

echo ‘—-> Eidt KeyTable’
if [ -e ${KEY_TABLE}.org ]
then
cp ${KEY_TABLE}.org ${KEY_TABLE}
else
cp ${KEY_TABLE} ${KEY_TABLE}.org
fi
echo “default._domainkey.${DNS} ${DNS}:default:/etc/opendkim/keys/${DNS}/default” >> ${KEY_TABLE}

echo ‘—-> Eidt TrustedHosts’
if [ -e ${TRUSTED_HOSTS}.org ]
then
cp ${TRUSTED_HOSTS}.org ${TRUSTED_HOSTS}
else
cp ${TRUSTED_HOSTS} ${TRUSTED_HOSTS}.org
fi
echo “localhost” >> ${TRUSTED_HOSTS}
echo “mail.${DNS}” >> ${TRUSTED_HOSTS}
echo “${DNS}” >> ${TRUSTED_HOSTS}

echo ‘—-> Eidt SigningTable’
if [ -e ${SIGNING_TABLE}.org ]
then
cp ${SIGNING_TABLE}.org ${SIGNING_TABLE}
else
cp ${SIGNING_TABLE} ${SIGNING_TABLE}.org
fi
echo “${DNS} default._domainkey.${DNS}” >> ${SIGNING_TABLE}

echo ‘—-> Eidt Postfix main.cf’
GRP=`cat ${POSTFIX_CONF}|grep ‘smtpd_milters’`
if [ -z $GRP ]
then
echo “” >> ${POSTFIX_CONF}
echo “#opendkim” >> ${POSTFIX_CONF}
echo “smtpd_milters = inet:127.0.0.1:8891” >> ${POSTFIX_CONF}
echo ‘non_smtpd_milters = $smtpd_milters’ >> ${POSTFIX_CONF}
echo ‘milter_default_action = accept’ >> ${POSTFIX_CONF}
fi

echo ‘—-> (re)start daemons’
if [ -e /etc/rc.d/init.d/opendkim ]
then
restatus=`/etc/rc.d/init.d/opendkim status`
if [[ “$restatus” =~ stopped ]]; then
/etc/rc.d/init.d/opendkim start
else
/etc/rc.d/init.d/opendkim restart
fi
else
echo ‘/etc/rc.d/init.d/opendkim not exists’
exit;
fi
/sbin/chkconfig opendkim on

if [ -e /etc/rc.d/init.d/postfix ]
then
restatus=`/etc/rc.d/init.d/postfix status`
if [[ “$restatus” =~ stopped ]]; then
/etc/rc.d/init.d/postfix start
else
/etc/rc.d/init.d/postfix restart
fi
else
echo ‘/etc/rc.d/init.d/postfix not exists’
exit;
fi

echo ‘#########################################’
echo ‘INSTALL IS OVER’
echo ‘#########################################’
echo ”
echo ‘Change DNS’
cat /etc/opendkim/keys/${DNS}/default.txt
echo “_adsp._domainkey”‘ IN TXT “dkim=unknown”‘
else
echo “—-> FAIL: ${DKIM_CONF} is not exists!”
exit;
fi

1件のコメント

コメントは受け付けていません。