我在开发服务器上运行着 exim。
目前它无法将邮件发送到本地以外的任何地方。不过这没关系——我不想意外地向我们的整个用户群发送垃圾邮件。但这确实很难查看电子邮件系统是否正常工作。
因此,我想捕获 exim 尝试发送的所有电子邮件(这些电子邮件由同一服务器上的基于 Web 的 CRM 系统生成),并将它们存储在共享邮箱中(我计划通过 Dovecot/IMAP 让所有开发人员都可以访问)
即我想将所有出站电子邮件重定向到本地 mbox。
这可能吗?我完全是一个 Exim 新手,正在为此苦苦挣扎。
答案1
当然可以。您必须配置redirect
路由器,如下所示:
catch_all_outgoing:
driver = redirect
data = admin [at] email
unseen
注意:unseen
意思是“继续使用其他路由器“。如果您只想捕获电子邮件和不是要将其转发给预期的收件人,只需将其删除即可。
看看进出口文件,到处都是这样的例子。
答案2
一个简单的解决方案是指定一个新的路由器和相应的传输。首先,我们将 exim 配置为监听要发送到单个邮箱的电子邮件的不同端口。此示例使用端口2525
,127.0.0.1
因此请确保在运行测试时将您的 CRM 配置为通过此端口上的 SMTP 发送消息。如果邮件服务器还用于其他目的,则需要将此地址和端口添加到现有local_interfaces
配置中。
local_interfaces = <; 127.0.0.1.2525
接下来,我们需要一个路由器,我们development
在下面的示例中调用它。我们指定一个条件,即通过端口上的 SMTP 接收的消息2525
应被此路由器接受并传递给名为single_box.
这应该放在 exim 配置部分之后,标记为begin routers
begin routers
development:
debug_print = "R: client_development for $local_part@$domain"
driver = accept
condition = ${if eq {$interface_port}{2525} {1}{0}}
transport = single_box
no_more
接下来,我们需要定义一个传输,它将接收路由的消息并将它们保存在某个地方。我们将保持简单,并将它们保存在一个邮箱中。传输配置可以放在以begin transports
single_box:
debug_print = "T: single_box for $local_part@$domain"
driver = appendfile
group = Debian-exim
mode = 0660
mode_fail_narrower = false
delivery_date_add
envelope_to_add = true
return_path_add = true
directory = /home/mailspace/mailboxes/development/Maildir/
maildir_format
create_directory = true
此示例在相应目录中创建 Maildir 格式的邮箱;请确保将此位置更改为适合您的服务器的位置。还请确保更改邮件服务器使用的组名;此处的示例假设使用标准 Debian 系统。Maildir 是一种常用格式,其中电子邮件消息保存为单个文件。可以使用文本编辑器轻松检查这些文件,如果您想使用 IMAP 使邮箱可用,dovecot 和 courier 支持 Maildir 格式。