答案1
如果您想重写路由器中的信封发件人,请使用该路由器中的“errors_to”操作
errors_to = [email protected]
http://www.exim.org/exim-html-current/doc/html/spec_html/ch-generic_options_for_routers.html 部分说:
如果设置了errors_to 的地址最终通过SMTP 进行传递,则该传递的信封发件人就是errors_to 值,因此传递路由上其他MTA 生成的任何退回邮件也会发送到那里。
答案2
最直接的方法可能是使用脚本/二进制文件的管道来执行任意转换:
begin routers
pass2script:
driver = accept
transport = myscript
condition = ## every distinction you need ##
还有交通:
begin transports
myscript:
driver = pipe
command = /path/to/script
包括标题、空行和正文在内的整个消息将被传递到stdin
脚本/二进制文件的。该脚本应读取stdin
并在继续后应运行sendmail -t
命令以在本地重新提交转换后的消息。我想到的最简单的脚本是下一个:
#!/bin/sh
cat /dev/stdin \
| sed '1 s/[email protected]/[email protected]/' \
| sendmail -t
####
exim
将收到修改后的消息并照常进行。您必须确保没有创建路由循环,也没有消息一次又一次地传递到脚本并返回。
此外,您还必须确保exim
用户有足够的权限来运行脚本,尤其是包装的sendmail -t
命令。可能您必须sudo
正确设置规则。