Debian sargeでdovecot(IMAP), qpopper(APOP), postfix(SMTP Auth)パスワード同期
Debian Sargeでは、Postfixバージョンが2.1.5なので、dovecot SASLには対応していない。
また、pop-before-SMTP をパッケージだけで簡単に実現するには、qpopperしかない。
しかしながら、セキュリティを考えるとPOP3よりAPOPを使いたい。dovecotではcram-md5を認証スキームとして使いたい(一部のMUAはimap認証でcram-md5しかサポートしないらしい)
このようなニーズ(ごく限定されているが)に答えるため、以下のようなスクリプトを作成した。
#! /bin/sh
#
# popasswd version 1.0 written by Hiroshi Miura
# Copyright (C) 2007 Hiroshi Miura [email protected]
# This program is lisenced by GNU GPL v2.0 and after
#
# usage: popasswd [-v] [-c] <username>
DOVECOTPW=/usr/local/sbin/dovecotpw
DOVECOT_PASSWD_FILE=/etc/dovecot/imap-passwd
REALM=example.com
TMP=/tmp
FLAG=
if [ "$1" == "-c" ]; then
UNAME=$2
FLAG="-c"
else
UNAME=$1
fi
if [ "$UNAME" == "" ]; then
echo "Usage: $0 [-c] <username>"
echo " -c: create post office user"
exit 1
fi
read -p "Please enter password for ${UNAME}:" -s PASSWD
echo
read -p "Re-enter new password:" -s REPASSWD
echo
if [ $PASSWD != $REPASSWD ]; then
echo "Error: two password is differed!"
exit 1
fi
# change APOP password for qpopeer
if popauth -user $UNAME $PASSWD; then
HMACPASSWD=`$DOVECOTPW -s HMAC-MD5 -u $UNAME -p $PASSWD`
# test existence of user in passwd-file
if (egrep -q "^${UNAME}:" $DOVECOT_PASSWD_FILE); then
# modify Dovecot password file(CRAM-MD5)
cp -p $DOVECOT_PASSWD_FILE ${TMP}/popasswd.$$
sed -e "s/^${UNAME}:.*/${UNAME}:${HMACPASSWD}/" ${TMP}/popasswd.$$ > $DOVECOT_PASSWD_FILE
rm -f ${TMP}/popasswd.$$ ${TMP}/popasswd_sed_script.$$
else
# add user to Dovecot password file
echo "${UNAME}:${HMACPASSWD}" >> $DOVECOT_PASSWD_FILE
fi
# change postfix(cyrus SASLv2) passwd file
saslpasswd2 ${FLAG} -p -u ${REALM} ${UNAME} << _EOL_
${PASSWD}
_EOL_
fi
popauthは、qpopperのAPOPパスワードを生成するコマンド。
saslpasswd2は、libsasl2のパスワードデータベースを更新するコマンド。
dovecotpwは、dovecotのpasswd like fileのパスワードを生成するコマンドである。
このスクリプトをつかうことにより、APOPとSMTP AUTHとIMAPのパスワードが同期できる。
この記事へのトラックバック アドレス
トラックバック URL (右をクリックし、ショートカット/リンクをコピーして下さい)
モデレーション待ちのフィードバック
この投稿にはモデレーション待ちのフィードバックが 23 件あります....