我想为我的所有域创build一个全局别名来捕获所有的邮件地址,如postmaster@
我已经将这些行添加到aliases.pcre :
/(MAILER-DAEMON|postmaster|abuse|webmaster)@(.*)$/ me@mydomain
和main.cf
virtual_alias_maps = pcre:/etc/postfix/aliases.pcre
但它也捕获到外部邮件的邮件,即redirect到我邮件发送到[email protected]
我可以redirect发送到这些地址的所有邮件,但只有当域名在virtual_mailbox_domains ? (没有在aliases.pcre写域名
*更新*
用户,域名,别名..存储在数据库中,使用postfixadmin来pipe理它。
别名表如下所示:
mysql> describe alias; +----------+--------------+------+-----+---------------------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------------------+-------+ | address | varchar(255) | NO | PRI | NULL | | | goto | text | NO | | NULL | | | domain | varchar(255) | NO | MUL | NULL | | | created | datetime | NO | | 0000-00-00 00:00:00 | | | modified | datetime | NO | | 0000-00-00 00:00:00 | | | active | tinyint(1) | NO | | 1 | | +----------+--------------+------+-----+---------------------+-------+
理想情况下,它应该尊重来自数据库的别名,如果它被设置,并且只redirect邮件的地址没有别名
作为替代方法,而不是像上面提出的长查询,您可以拆分为两个sql映射
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-aliases.cf, mysql:/etc/postfix/my-custom-query.cf
除查询外,这两个文件都有相同的参数。 对于/etc/postfix/mysql-virtual-aliases.cf ,您可以使用postfixadmin中的默认查询
SELECT goto FROM alias WHERE address = '%s'
而对于my-custom-query.cf你有查询
select '[email protected]' AS goto from domain where domain='%d' AND '%u' REGEXP '^(MAILER-DAEMON|postmaster|abuse|webmaster)$' LIMIT 1;
怎么运行的
如果您的第一张地图mysql-virtual-aliases.cf返回null ,则后缀将尝试查询第二张地图my-custom-query.cf 。
优点:
mysql-virtual-aliases.cf中的查询匹配,那么您只需运行一个简单的查询。 缺点:
mysql-virtual-aliases.cf中的查询不匹配,则必须运行其他第二个查询。 最后这是我configuration的
在/etc/postfix/mysql-virtual-aliases.cf :
hosts = localhost user = postfix password = mypass dbname = postfix query = SELECT goto FROM alias WHERE address = '%s'
在/etc/postfix/mysql-virtual-aliases-postmaster.cf :
hosts = localhost user = postfix password = mypass dbname = postfix query = SELECT 'me@mydomain' AS goto FROM domain WHERE domain='%d' AND active = '1' AND '%u' REGEXP '^(MAILER-DAEMON|postmaster|abuse|webmaster)$' LIMIT 1
并在main.cf :
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-aliases.cf, mysql:/etc/postfix/mysql-virtual-aliases-postmaster.cf
也许有人知道更容易/有效的方法?