
从数据库中检索给定域的所有现有用户应该非常容易:
SELECT username FROM vmail WHERE domain='%d';
(%d是域的占位符).但是,我怎么能告诉postfix这样做的邮件是针对all@domain.tld的邮件,当然只有当这样的邮件来自可靠的来源时(permit_sasl_authenticated,permit_mynetworks?)?
我现在用谷歌搜索了几个小时,但我发现的只是“全能”(与我想要的完全相反),基于shell脚本的解决方案(走在resp.域名目录下),或者使用邮件 – 列表方法 – 这些都不符合我的需求.
解决方法 您可以使用virtual_alias_maps定义别名all@example.com.这里是 virtual 5使用的格式.pattern address1,address2,address3,...
因此,您需要构造查询以连接所有行.取自此主题:Can I concatenate multiple MySQL rows into one field?,您可以使用此查询.
SELECT GROUP_CONCAT(CASE WHEN active='1' THEN username ELSE NulL END separator ',') FROM vmail WHERE DOMAIN='%d' AND '%s'='all@%d'
这需要转到MysqL_virtual_alias_maps.cf,并且可以使用UNION附加到现有查询 – 因此结果如下所示:像这样:
query = SELECT goto FROM alias WHERE address='%s' AND active = '1' UNION SELECT GROUP_CONCAT(CASE WHEN active='1' THEN username ELSE NulL END separator ',') FROM vmail WHERE DOMAIN='%d' AND '%s'='all@%d'
(可能需要全部在一行 – 这里的格式化只是为了使它更容易阅读).
要仅允许permit_mynetworks和permit_sasl_authenticated,请按以下顺序放置限制
smtpd_recipIEnt_restrictions = .... permit_mynetworks permit_sasl_authenticated check_recipIEnt_access regexp:/etc/postfix/restrict.all.alias reject_unauth_destination
在/etc/postfix/restrict.all.alias中,定义
/^all@/ REJECT access denIEd
当从mynetworks发送或由经过身份验证的用户发送时,它将允许向所有@域发送电子邮件,但在此之后拒绝.
总结以上是内存溢出为你收集整理的创建后缀别名“all@domain.tld”以发送给域的所有用户全部内容,希望文章能够帮你解决创建后缀别名“all@domain.tld”以发送给域的所有用户所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)