qmailのエラーは分かりづらい
知り合いの会社のサーバーリニューアルの仕事をしている(現在進行形、、、)。久しぶりにqmailを触ったけど、いろいろはまった。
・POP3でメールを取ろうとすると”ERR unable to write pipe “というエラーメッセージ
→ 起動スクリプトの間違い(必要なファイルのパスが違ってた)
下のような起動スクリプトだが、checkpasswordのパスが違っていただけだった。qmail-popupがpipeを使ってcheckpasswordにデータを流すが、checkpasswordへのpipeが開けない、という意味なんだと思う。
#PASSPROG=”/bin/checkpassword”
PASSPROG=”/usr/bin/checkpassword”
HOSTNAME=`hostname –fqdn`
exec /usr/bin/softlimit -m 3200000
/usr/bin/envdir /etc/relay-ctrl /usr/bin/relay-ctrl-chdir
/usr/bin/tcpserver -v -R -c 200 0 pop3
/var/qmail/bin/qmail-popup $HOSTNAME
$PASSPROG /usr/bin/relay-ctrl-allow /var/qmail/bin/qmail-pop3d Maildir 2>&1
参考サイトはなし
・tcpserverのエラー
→エラーメッセージの通り、単に割り当てるメモリが不足しているだけだった、、、softlimitの制限値を大きくすればよい。最近のglibcの場合は、以前のより多めにする必要がある。
参考サイト
・_no_mailbox_here_by_that_name._(#5.1.1)
→”no mailbox here by that name”といいつつも、/home/foo/Maildir/は存在する。そんな時は大体権限の設定がおかしい。所有者が正しいか?600か?を確認。
なんかその他にもこの1日でたくさんエラーが出たけど、結構忘れた。以下、記憶の断片。
・/var/spool/relay-ctrl/allowは700にしないとダメだった。(POP before SMTPを使ってる)
・qmail-smtpdの起動スクリプトはこんな感じ
/usr/bin/envdir /etc/relay-ctrl /usr/bin/relay-ctrl-chdir
/usr/bin/tcpserver -v -R -p
-c “$MAXSMTPD” -u $QMAILDUID -g $NOFILESGID 0 smtp
/usr/bin/relay-ctrl-check $SMTPD 2>&1
relay-ctrl-chdirを挟んでいないとき、わかりにくいエラーが出てダメだった。