You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

在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_domainsvirtual_mailbox_maps配置
  • 脚本中避免执行高权限操作,降低安全风险

内容的提问来源于stack exchange,提问作者Alan Wrigley

火山引擎 最新活动