我需要从头开始重新配置 Postfix。当我在版本 2.11.8-1.4 上配置时,一切正常。现在我在 openSUSE Leap 15.0 上配置版本 3.3.1。我注意到,当 postfix 与 mysql 一起使用时,postfix 会在日志中抱怨“未使用”参数。例如,
/usr/sbin/postconf: warning: mysql:/etc/postfix/sql/virtual_alias_maps.cf: unused parameter: user=postfix
/usr/sbin/postconf: warning: mysql:/etc/postfix/sql/virtual_alias_maps.cf: unused parameter: hosts=localhost
/usr/sbin/postconf: warning: mysql:/etc/postfix/sql/relay_domains_maps.cf: unused parameter: dbname=postfix
我使用 postmap -q 检查了 MySQL 映射。一切正常,我得到了域的字符串。
我查看了 postfix 站点上关于如何连接 postfix 和 mysql 的信息。我记下了 main.conf 中用于正确连接卡的参数。MySQL main.cf 部分如下所示:
############################################################
# Start MySQL from postfixwiki.org
############################################################
#relay_domains = $mydestination, hash:/etc/postfix/relay
relay_domains = mysql:/etc/postfix/sql/relay_domains_maps.cf
virtual_alias_maps = mysql:/etc/postfix/sql/virtual_alias_maps.cf
virtual_alias_domains = mysql:/etc/postfix/sql/virtual_alias_domain_maps.cf
#virtual_alias_domains =
#virtual_alias_maps = hash:/etc/postfix/virtual
virtual_uid_maps = static:303
virtual_gid_maps = static:303
virtual_minimum_uid = 303
virtual_mailbox_base = /srv/maildirs
virtual_mailbox_domains = mysql:/etc/postfix/sql/virtual_domains_maps.cf
#virtual_mailbox_limit = 0
#virtual_mailbox_limit_inbox = no
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
## For dovecot LMTP replace 'virtual' with 'lmtp:unixrivate/dovecot-lmtp'
#virtual_transport = virtual
## Additional for quota support
#virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
#virtual_mailbox_limit_override = yes
### Needs Maildir++ compatible IMAP servers, like Courier-IMAP
#virtual_maildir_filter = yes
#virtual_maildir_filter_maps = hash:/etc/postfix/vfilter
#virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please try again later.
#virtual_maildir_limit_message_maps = hash:/etc/postfix/vmsg
#virtual_overquota_bounce = yes
#virtual_trash_count = yes
#virtual_trash_name = ".Trash"
############################################################
# End MySQL from postfixwiki.org
############################################################
系统错误日志中没有记录。只有在初始化后的 postfix 作业日志中才会出现这些警告。我猜,postfix 工作正常,但它是什么?
更新:relay_domains_maps.cf 的内容:
user = postfix
password = pass
hosts = localhost
#hosts = 127.0.0.1
dbname = postfix
#table = domain
#select_field = domain
#where_field = domain
#additional_conditions = and backupmx = '1'
query = SELECT domain FROM domain WHERE domain='%s' and backupmx='1'
SQL 映射的文件已预先安装。我只是将值更改为正确的值。
答案1
我的工作文件内容相同。在 Ubuntu 的 postfix 3.1.0 上
user = mailserveruser
password = supersecret123
hosts = 127.0.0.1
dbname = mailserverdbtables
query = SELECT destination FROM virtual_aliases WHERE source='%s'
无需您发布文件内容(请务必将密码更改为明显示例的内容,请随意对用户、主机和数据库名称执行相同的操作)
答案2
openSUSE 15.1 上也有同样的问题!
也许使用“proxy:mysql:/etc/postfix/sql/virtual_alias_domain_maps.cf”
代替
仅限“mysql:/etc/postfix/sql/virtual_alias_domain_maps.cf”。
但它并没有解决我的问题,在 opensuse 15.1 上也存在同样的问题。
我尝试使用 postmap -q mysql:/etc/postfix/sql/virtual_alias_domain_maps.cf 来验证配置。
答案/结果符合预期。看来 Postfix 在 Lifetime 中对 mysql 的支持存在问题。似乎是 Opensuse 15.0 / 15.1 和 Postfix 3.3.1 上的一个错误。
Postfix 从不打开任何数据库连接。我认为您的系统上的情况也一样。