バッドノウハウです。
ユーザ名に「-」が入っている場合
例えば、「foo-bar」というUNIXアカウントがあって、「foo-bar@example.com」宛にメールがあった場合、foo-barのホームディレクトリにある.qmailファイルに従って処理されると思いがちですが、違うんです。
qmailでは、「アカウント名-hoge」という拡張メールアドレスがあります。(拡張メールアドレスの詳しい解説)
メールログを見ると、
Jan 23 20:30:29 alpha qmail: 1485171029.781322
starting delivery 158: msg 659726 to local foo-bar@example.com Jan 23 20:30:29 alpha qmail: 1485171029.781344 status: local 1/10 remote 0/20
Jan 23 20:30:29 alpha qmail: 1485171029.786233 delivery 158:
failure: Sorry,_no_mailbox_here_by_that_name._(#5.1.1)/
ユーザ「foo-bar」に配送されそうなものですが、違うんです。
ユーザ「foo」の拡張メールアドレス「foo-bar」として処理されます。
つまり、ユーザ「foo」のホームディレクトリにある「.qmail-bar」ファイルに従って処理されるのです。
これをどう解決するか。
バッドノウハウですが、ユーザ「foo」を新たに作って転送させます。
# useradd -s /bin/false foo # passwd foo
(中略)
# cd /home/foo
# echo "./Maildir/" > .qmail-bar
そして、ユーザ「foo」でメールを読み書きします。
ホスト名に「-」があって、virtualdomainsでメールを受け取る場合
普通に考えると、
# echo "virtual-domain.example.com" >> rcpthosts
# echo "virtual-domain.example.com:virtual-domain" >> virtualdomains
# cd /home/virtual-domain
# echo "./Maildir/" > .qmail
だと思いますが、maillogを見ると、
Jan 23 20:30:29 alpha qmail: 1485171029.781322
starting delivery 158: msg 659726 to
local virtual-domain-hostmaster@virtual-domain.example.com Jan 23 20:30:29 alpha qmail: 1485171029.781344 status: local 1/10 remote 0/20
Jan 23 20:30:29 alpha qmail: 1485171029.786233 delivery 158: failure:
Sorry,_no_mailbox_here_by_that_name._(#5.1.1)/
と、配送に失敗しています。
解決方法は、こちらも別のユーザを作って配送させます。
# cd /var/qmail/control
# echo "virtual-domain.example.com" >> rcpthosts
# echo "virtual-domain.example.com:virtual" >> virtualdomains
# useradd -s /bin/false virtual # passwd virtual
(中略)
# cd /home/virtual
# echo "./Maildir/" > .qmail-domain-hostmaster
このように設定すれば、maillogは
Jan 28 20:15:36 alpha qmail: 1485602136.567592 starting delivery 35:
msg 659701 to local virtual-domain-hostmaster@virtual-domain.example.com Jan 28 20:15:36 alpha qmail: 1485602136.567636 status: local 1/10 remote 0/20
と配送されることがわかります。
qmailのリスタート
# service qmail restart
CentOSなどはこのコマンドでリスタートできます。