基本的 exim 配置 - 將所有出站電子郵件重定向到本地地址
我在開發伺服器上執行 exim。
它目前無法在本地以外的任何地方投遞郵件。不過這很好——我不想意外地向我們的整個使用者群發送垃圾郵件。但這確實讓人很難查看電子郵件系統是否正常工作。
因此,我想擷取 exim 嘗試發送的所有電子郵件(這些電子郵件由同一伺服器上的基於 Web 的 CRM 系統生成),並將它們儲存在共享郵箱中(我計劃通過 Dovecot 讓所有開發人員都可以訪問該郵箱) /IMAP)
即,我想將所有出站電子郵件重定向到本地 mbox。
這可能嗎?我是一個完整的 exim 初學者,並為此苦苦掙扎。
你當然可以。您必須配置
redirect
路由器,如下所示:catch_all_outgoing: driver = redirect data = admin [at] email unseen
NB
unseen
意思是“繼續使用其他路由器”。如果您只想擷取電子郵件而不是將其轉發給預期的收件人,只需將其刪除。看看exim 文件,裡面有很多這樣的例子。
一個簡單的解決方案是指定一個新的路由器和相應的傳輸。首先,我們將 exim 配置為偵聽要發送到單個郵箱的電子郵件的不同埠。此範例使用 port
2525
on127.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 格式。