如何在Mailman3中提取并打印Exim所使用的别名?
提取Mailman3为Exim生成的别名
为什么你的脚本会报错?
你用的mailman.testing.documentation.cli是Mailman测试框架的工具,仅用于生成文档示例,并非生产环境工具。而且该脚本针对Postfix生成专属文件(postfix_domains),完全不适配Exim场景,自然会出现文件找不到的错误。
方法1:用Mailman3官方命令直接生成Exim别名
Mailman3自带的mailman aliases命令支持生成适配Exim的别名格式,直接在命令行执行:
mailman aliases --output exim
执行后会直接输出所有Mailman3管理的邮件列表别名(包括你提到的9个核心别名,对应7个封装脚本)。
如果需要将结果保存到Exim可读取的文件,可重定向输出:
mailman aliases --output exim > /etc/exim4/mailman_aliases
之后在Exim配置中添加对该文件的引用,示例配置片段:
aliases: driver = redirect allow_defer allow_fail data = ${lookup{$local_part}lsearch{/etc/exim4/mailman_aliases}{$value}{}}
方法2:用Python脚本生成(替代命令行)
如果需要通过Python脚本实现,不要依赖测试模块,直接调用Mailman3的核心API:
#!/usr/bin/python3 from mailman.config import config from mailman.interfaces.command import ICLISubCommand from zope.component import getUtility # 加载Mailman配置 config.load() # 获取aliases命令实例并生成Exim格式别名 aliases_command = getUtility(ICLISubCommand, name='aliases') exim_aliases = aliases_command._generate_exim_aliases() print(exim_aliases)
运行该脚本会直接打印出Exim兼容的别名内容,无需生成Postfix专属文件。
内容的提问来源于stack exchange,提问作者Polo
相关产品推荐
相关产品推荐

