postfix+mysqlでvirtual domainを追加したがvirtual domain宛のメールが受信できない。
ログを確認。

tail -f /var/log/maillog /var/log/messages
host1 postfix/smtpd[15712]: connect from mail.xxx.com[xx.xx.xx.xxx]
host1 postfix/trivial-rewrite[15715]: warning: table "mysql:/etc/postfix/mysql_virtual_domains_maps.cf": empty lookup result for: "virtualdomain-a.com" -- ignored
host1 postfix/smtpd[15712]: NOQUEUE: reject: RCPT from mail.xxx.com[xx.xx.xx.xxx]: 554 5.7.1 <addr@virtualdomain.com>: Relay access denied; from=<fromuser@xx.xx.xx> to=<addr@virtualdomain.com> proto=ESMTP helo=
host1 postfix/smtpd[15712]: disconnect from mail.xxx.com[xx.xx.xx.xxx]

ここがNGみたい。
postfix/trivial-rewrite[15715]: warning: table "mysql:/etc/postfix/mysql_virtual_domains_maps.cf": empty lookup result for: "virtualdomain-a.com" -- ignored

mysql_virtual_domains_maps.cfに記載したmysqlのテーブルからドメインが見つけられないためにエラーになっているようだ。
どうも、mysql_virtual_domains_maps.cfの記載方法が問題があるのか、virtual domain名にハイフンが入っているのでうまくselectできないのだろうか?

/etc/postfix/mysql_virtual_domains_maps.cf
------------
user = postfix
password = **********
hosts = localhost
dbname = postfix
table = domain
<span style="color: #ff0000;">#select_field = description</span>
<span style="color: #ff0000;"> #where_field = domain</span>
<span style="color: #3366ff;">query = SELECT domain FROM domain WHERE domain='%s'</span>
------------

select_field = description
where_field = domain
をやめてquery で指定したが、select_field = descriptionになっている。追加したvirtual domainのdescriptionカラムは空っぽでした。


これが原因だったかな?

/etc/init.d/postfix restart してメールが受信できることを動作した。