使用后缀托管通配符子域

Jac*_* M. 12 postfix

我正在努力研究如何让 postfix 接受我的主站点的任何子域的电子邮件。我没有虚拟域,只有一长串用于本地交付的子域。具体来说,我正在python@*.mydomain.com使用别名文件输入 Python:

python:    |/www/proc_email.py
Run Code Online (Sandbox Code Playgroud)

Python 可以从那里处理交付。我设想这看起来像:

mydestination = encendio, localhost.localdomain, localhost, *.mydomain.com
Run Code Online (Sandbox Code Playgroud)

我正在 Ubuntu 上运行最新版本的 postfix(不确定如何检查版本)。

提前致谢。

Ins*_*yte 20

如果您在 Postfix 配置中明确列出目标,则不能使用通配符,但幸运的是该$mydestination选项接受表查找。因此,尝试设置$mydestination为这样的pcre 映射

mydestination = pcre:/etc/postfix/mydestinations
Run Code Online (Sandbox Code Playgroud)

然后/etc/postfix/mydestinations使用正确锚定和转义的正则表达式创建:

/^encendio$/                  ACCEPT
/^localhost\.localdomain$/    ACCEPT
/^localhost$/                 ACCEPT
/^.*\.mydomain\.example$/     ACCEPT
Run Code Online (Sandbox Code Playgroud)

从技术上讲,您可以在“接受”的位置放置任何内容,因为结果将被忽略;只要有比赛就足够了

指定主机名或域名列表、“/file/name”或“type:table”模式,以逗号和/或空格分隔。“/file/name”模式被其内容替换;当名称与查找键匹配时,匹配“type:table”查找表(查找结果被忽略)。

  • 应该锚定正则表达式;见 http://serverfault.com/a/352928/84843 (2认同)

小智 20

接受的答案中的 pcre 解决方案效果很好,但您可能需要考虑锚定正则表达式以避免仅命中部分域名。

/^encendio$/                  ACCEPT
/^localhost\.localdomain$/    ACCEPT
/^localhost$/                 ACCEPT
/^.*\.mydomain\.com$/         ACCEPT
Run Code Online (Sandbox Code Playgroud)