我正在为发送一些电子邮件通知的基于 Web 的应用程序设置测试服务器。
有时测试是使用真实客户数据进行的,因此我需要保证服务器在测试时无法向我们的真实客户发送电子邮件。
我想要的是配置 postfix,以便它接收任何外发电子邮件并将其重定向到单个电子邮件地址,而不是发送到真正的目的地。
我正在运行 Ubuntu 服务器 9.10。
先感谢您
答案1
设置本地用户来接收所有被捕获的邮件:
adduser mailtrap
您需要在main.cf中添加:
transport_maps = hash:/etc/postfix/transport
luser_relay = mailtrap
然后创建 /etc/postfix/transport,其中包含以下内容:
localhost :
your.hostname.example.com:
* local:mailtrap
保存然后运行: postmap /etc/postfix/transport
最后重新启动 postfixinvoke-rc.d postfix restart
所有本地电子邮件将正常投递,外部电子邮件将投递至本地mailtrap
帐户。
答案2
更好的方法是创建一个虚拟别名文件:
在 /etc/postfix/main.cf 中:
virtual_alias_maps = pcre:/etc/postfix/virtual
在 /etc/postfix/virtual 中:
/.*@.*/ root
您可以替换root
为您希望接收所有外发电子邮件的用户。如果您希望本地邮件正常投递(无需重定向),可以调整此模式:
/.*@(?!hostname\.localdomain$).*/ root
最初的想法在这里找到: Postfix 开发服务器-拦截所有外发邮件
答案3
Postfix 提供了 smtp-sink 功能。默认情况下,它会将收到的所有电子邮件都屏蔽。后续版本还可以配置为将电子邮件捕获到文件中。
从技术上讲,这并没有使用 postfix(而是使用 postfix 提供的实用程序)。从技术上讲,它也不会将每封电子邮件重定向到单个电子邮件地址。但它确实捕获了端口 25 上的所有流量并将其转储到可以解析的文件中。