在Ubuntu 24.04中配置Postfix支持.qmail文件的技术求助
实现Postfix多域名邮件路由(替代.qmail文件功能)
核心原理说明
旧系统里Plesk依赖.qmail文件是借助了qmail-local的投递机制,Postfix原生支持类似的多样化路由能力,主要通过virtual_alias_maps(别名转发)和transport_maps(自定义投递逻辑)组合实现。
具体配置步骤
1. 启用虚拟域支持
编辑Postfix主配置文件/etc/postfix/main.cf,确保以下配置项正确设置:
# 声明需要处理的多域名 virtual_alias_domains = example.com example.net # 替换为你的实际域名 # 绑定别名映射文件 virtual_alias_maps = hash:/etc/postfix/virtual # 启用自定义投递规则(如需转发到脚本必须配置) transport_maps = hash:/etc/postfix/transport
2. 配置基础邮件转发(对应.qmail的普通转发)
编辑/etc/postfix/virtual文件,按以下格式配置路由规则:
# 单个邮箱转发到目标地址 user@example.com target@another-domain.com # 域名下所有邮件统一转发(通配符规则) @example.net catchall@your-main-domain.com
配置完成后执行命令使规则生效:
postmap /etc/postfix/virtual systemctl reload postfix
3. 配置邮件转发到服务器脚本(自定义投递逻辑)
如果需要将邮件转发到脚本处理,分两步操作:
- 第一步:在
/etc/postfix/transport中指定需要触发脚本的域名或邮箱:
# 整个域名的邮件都走自定义脚本投递 example.com script: # 仅单个邮箱触发脚本 script-user@example.net script:
执行命令生效:
postmap /etc/postfix/transport systemctl reload postfix
- 第二步:编写并配置投递脚本
创建脚本文件(比如/usr/lib/postfix/script/mail-processor.sh),示例内容:
#!/bin/bash # 读取邮件内容并处理,这里以写入日志为例,可替换为你的业务逻辑 cat >> /var/log/postfix-script-handler.log
设置脚本权限(确保Postfix能执行):
chmod +x /usr/lib/postfix/script/mail-processor.sh chown postfix:postfix /usr/lib/postfix/script/mail-processor.sh
4. 验证配置
- 发送测试邮件到配置的邮箱地址,检查目标邮箱是否收到转发邮件
- 查看
/var/log/postfix-script-handler.log是否有邮件内容写入 - 查看Postfix日志
/var/log/mail.log排查报错信息
注意事项
- Ubuntu 24.04中Postfix默认以
postfix用户运行,脚本及相关路径必须对该用户开放读写/执行权限 - 若需同时实现邮件存储+路由,可结合
virtual_mailbox_domains和virtual_mailbox_maps配置 - 脚本中避免执行高权限操作,降低安全风险
内容的提问来源于stack exchange,提问作者Alan Wrigley




