使用 Exim 將郵件傳送到多個目的地

使用 Exim 將郵件傳送到多個目的地

我想將郵件發送到多個目的地,即發送到 php 腳本和使用者的郵箱。我正在使用 Exim 來發送郵件。我已經更改了 exim 設定檔的路由器和傳輸部分,如下所示。我設計了一個名為 send_to_site 的自訂傳輸。我能夠將郵件標頭髮送到 php 腳本,但無法將電子郵件傳送到使用者的郵箱。這是我客製化的交通:

######路由器
catchall_mail:
  driver = accept
  domains = my.server.com
  transport = send_to_site
#####運輸
send_to_site:
    driver = pipe
    command = /home/bin/curl http://my.server.com/mailTest.php --data-urlencode "mail@-"
    user = afterlogic
    group = afterlogic
    return_path_add
    delivery_date_add
    envelope_to_add

其中 mailTest.php 是我的 php 腳本。

答案1

經過很長一段時間我克服了這個問題。在路由器部分編寫了我自己的自訂路由器,它將電子郵件發送到我想要的 php 腳本。在傳輸部分編寫了我自己的自訂傳輸,它將確保使用curl 交付到所需的腳本。剛剛在我的/etc/exim.cnf文件中寫入了以下配置:

############ROUTERS
runscript:
        driver = accept
        transport = run_script
        unseen
        no_expn
        no_verify
############TRANSPORT
run_script:
     debug_print = "T: run_script for $local_part@$domain"
     driver = pipe
     command = /home/bin/curl http://my.domain.com/mailTest.php --data-urlencode $original_local_part@$original_domain

其中 mailTest.php 是我注定的腳本。

答案2

您必須建立兩個路由器,其中第一個應該有unseen動詞。第一個路由器必須將訊息透過管道傳輸到腳本,而第二個路由器必須執行到用戶郵箱的常規傳遞。

抱歉回答簡短,我是透過電話發文的。

相關內容