Email-Server

基本的 exim 配置 - 將所有出站電子郵件重定向到本地地址

  • October 12, 2018

我在開發伺服器上執行 exim。

它目前無法在本地以外的任何地方投遞郵件。不過這很好——我不想意外地向我們的整個使用者群發送垃圾郵件。但這確實讓人很難查看電子郵件系統是否正常工作。

因此,我想擷取 exim 嘗試發送的所有電子郵件(這些電子郵件由同一伺服器上的基於 Web 的 CRM 系統生成),並將它們儲存在共享郵箱中(我計劃通過 Dovecot 讓所有開發人員都可以訪問該郵箱) /IMAP)

即,我想將所有出站電子郵件重定向到本地 mbox。

這可能嗎?我是一個完整的 exim 初學者,並為此苦苦掙扎。

你當然可以。您必須配置redirect路由器,如下所示:

catch_all_outgoing:
driver = redirect
data = admin [at] email
unseen

NBunseen意思是“繼續使用其他路由器”。如果您只想擷取電子郵件而不是將其轉發給預期的收件人,只需將其刪除。

看看exim 文件,裡面有很多這樣的例子。

一個簡單的解決方案是指定一個新的路由器和相應的傳輸。首先,我們將 exim 配置為偵聽要發送到單個郵箱的電子郵件的不同埠。此範例使用 port 2525on 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 格式。

引用自:https://serverfault.com/questions/164507