我正在尝试弄清楚如何让 postfix 接受我主站点的任何子域的电子邮件。我没有虚拟域,只有一长串用于本地交付的子域。具体来说,我python@*.mydomain.com
使用别名文件将其输入到 Python 中:
python: |/www/proc_email.py
Python 可以从那里处理交付。我设想这看起来像这样:
mydestination = encendio, localhost.localdomain, localhost, *.mydomain.com
我在 Ubuntu 上运行最新版本的 postfix(不太清楚如何检查版本)。
提前致谢。
答案1
如果您在 Postfix 配置中明确列出目的地,则不能使用通配符,但幸运的是,该$mydestination
选项接受表查找。因此,请尝试设置$mydestination
为聚合酶链反应图谱像这样:
mydestination = pcre:/etc/postfix/mydestinations
/etc/postfix/mydestinations
然后使用正确锚定和转义的正则表达式创建:
/^encendio$/ ACCEPT
/^localhost\.localdomain$/ ACCEPT
/^localhost$/ ACCEPT
/^.*\.mydomain\.example$/ ACCEPT
从技术上讲,你可以在“ACCEPT”的位置放任何东西,因为结果会被忽略;只是比赛的存在就足够了:
指定主机或域名列表、“/file/name”或“type:table”模式,以逗号和/或空格分隔。“/file/name”模式由其内容替换;当名称与查找键匹配时,将匹配“type:table”查找表(查找结果将被忽略)。
答案2
接受答案中的 pcre 解决方案效果很好,但您可能需要考虑锚定正则表达式,以避免仅在域名的一部分上获得命中。
/^encendio$/ ACCEPT
/^localhost\.localdomain$/ ACCEPT
/^localhost$/ ACCEPT
/^.*\.mydomain\.com$/ ACCEPT
答案3
*.mydomain.com
不起作用。
您需要创建relay-domains
并将所有子域名放入其中。每行 1 个。