自分用メモ/バグ有:時間短縮、postfixインストール

■テスト環境でさっさと構築してしまいたい時の為に
 以下を「postfix-install.sh」として保存、
 「chmod +x postfix-install.sh」
 「./postfix-install.sh | tee -a postfix-install.log」
 として、ユーザ権限で実行する。

 ※sudoパスワードと、suのパスワードは異なるので注意。

------

#!/bin/bash -x

# 必要なパッケージを確認、インストールされていなければインストールする

echo "postfix dovecot-common dovecot-pop3d dovecot-imapd sasl2-bin" | \
for list in `xargs`;do \
dpkg -l "$list" | grep ^ii > /dev/null 2>&1 || \
sudo apt-get install -y "$list";
done

#saslauthdを有効にする

MYSASL="/etc/default/saslauthd"
sudo cp -pi ${MYSASL} ${MYSASL}.org; \ 
grep "START=no" ${MYSASL} && \
su root -c 'sed s/"START=no"/START="yes"/ '"${MYSASL}.org"' > '"${MYSASL}"

ps -e | grep saslauthd > /dev/null 2>&1 || sudo /etc/init.d/saslauthd start
ps -e | grep saslauthd > /dev/null 2>&1 && sudo /etc/init.d/saslauthd restart

#この時点での認証方式を確認
sudo saslpluginviewer
saslfinger -s
saslfinger -c

#sasldbに登録されているユーザ数のチェック(初回は0)

sudo sasldblistusers2 | wc -l | echo "Regist users: "`xargs`

#sasldbにユーザ登録(要パスワード入力)

MYNAME=`whoami`; \
sudo sasldblistusers2 | grep `whoami` > /dev/null 2>&1 || \
sudo saslpasswd2 -c -u `hostname -f` $MYNAME

# sasldb に登録されているユーザの一覧
echo "### sasldb user list ... ###"
sudo sasldblistusers2

MYNAME=`whoami`; \
echo -n "Please input password :"; \
read PASS; \
sudo testsaslauthd -u $MYNAME -s `hostname -f` -p $PASS;

#sasldbに登録されているユーザ数のチェック

sudo sasldblistusers2 | wc -l | echo "Regist users: "`xargs`

ps -e | grep saslauthd > /dev/null 2>&1 || sudo /etc/init.d/saslauthd start
ps -e | grep saslauthd > /dev/null 2>&1 && sudo /etc/init.d/saslauthd restart

#この時点での認証方式を確認
sudo saslpluginviewer
saslfinger -s
saslfinger -c

# smtpd_sasl_auth_enable = no になっていることを確認
sudo postconf | grep "smtpd_sasl_auth_enable = no" && \
sudo cp -pi /etc/postfix/main.cf /etc/postfix/main.cf.org
sudo sed s%'# TLS parameters"%'smtpd_sasl_auth_enable = yes\
smtp_sasl_password_maps = hash:/etc/postfix/userpasswd\
smtpd_sasl_local_domain = $myhostname\
smtpd_sasl_application_name = smtpd\
broken_sasl_auth_clients = yes\
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination\n\n'"&"% \
/etc/postfix/main.cf.org > /etc/postfix/main.cf
test -f /etc/postfix/userpasswd || \
echo `hostname -f` `whoami` > /etc/postfix/userpasswd; \
sudo postmap /etc/postfix/userpasswd

ps -e | grep postfix > /dev/null 2>&1 && sudo /etc/init.d/postfix restart
ps -e | grep postfix > /dev/null 2>&1 || sudo /etc/init.d/postfix start

#mail_locationの指定先の作成
sudo cp -pi /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.org
FLAG=0; \
sudo dovecot -a | grep "mail_location\: \$" && FLAG=1
if [ ${FLAG} -eq "0" ];then \
echo "do nothing"; \
else \
test -d ~/mail || mkdir ~/mail; \
sudo sed s+'# mail_location = mbox:~/mail:INBOX=/var/mail/%u'+'mail_location = mbox:~/mail:INBOX=/var/mail/%u'+ \
 /etc/dovecot/dovecot.conf.org > /etc/dovecot/dovecot.conf; \
ps -e | grep dovecot > /dev/null 2>&1 && sudo /etc/init.d/dovecot restart
ps -e | grep dovecot > /dev/null 2>&1 || sudo /etc/init.d/dovecot start
fi

sudo cp -pi /etc/postfix/master.cf /etc/postfix/master.cf.org
sudo sed s%"#submission inet n - - - - smtpd"%"submission inet n - - - - smtpd" /etc/postfix/master.cf.org \
 > /etc/postfix/master.cf

ps -e | grep postfix > /dev/null 2>&1 && sudo /etc/init.d/postfix restart
ps -e | grep postfix > /dev/null 2>&1 || sudo /etc/init.d/postfix start

#パスワードチェックにauxpropを使う設定

test -f /etc/postfix/sasl/smtpd.conf || \
sudo saslpluginviewer | grep '^Plugin "sasldb"' || \
su root -c 'echo "pwcheck_method: auxprop" > /etc/postfix/sasl/smtpd.conf'

sudo mv -i /etc/sasldb2 /var/spool/postfix/etc 
test -f /etc/sasldb2 || sudo ln -s /var/spool/postfix/etc/sasldb2 /etc
sudo chgrp postfix /var/spool/postfix/etc/sasldb2

sudo saslpluginviewer | grep '^Plugin "sasldb"'

ps -e | grep saslauthd > /dev/null 2>&1 && sudo /etc/init.d/saslauthd restart
ps -e | grep saslauthd > /dev/null 2>&1 || sudo /etc/init.d/saslauthd start




#この時点での認証方式を確認
sudo saslpluginviewer
saslfinger -s
saslfinger -c

#仮想マシンのNATから出られるように再設定
sudo dpkg-reconfigure postfix

#すべてのサービスを再スタートする
ps -e | grep saslauthd > /dev/null 2>&1 && sudo /etc/init.d/saslauthd restart
ps -e | grep saslauthd > /dev/null 2>&1 || sudo /etc/init.d/saslauthd start

ps -e | grep dovecot > /dev/null 2>&1 && sudo /etc/init.d/dovecot restart
ps -e | grep dovecot > /dev/null 2>&1 || sudo /etc/init.d/dovecot start

ps -e | grep postfix > /dev/null 2>&1 && sudo /etc/init.d/postfix restart
ps -e | grep postfix > /dev/null 2>&1 || sudo /etc/init.d/postfix start

sudo dovecot -a
sudo dovecot -n
sudo postconf -d
sudo postconf -n
sudo postconf -m