Linux

將域的所有 Postfix 電子郵件通過管道傳輸到 PHP 腳本 - Centos7/EC2

  • October 31, 2017

我已經閱讀了幾篇文章,包括此處的文章,但似乎沒有一個明確簡潔的答案。

我讓 CentOS7 在 AWS 上的 EC2 實例上執行 Postfix。我想將域 (@support.mydomain.com) 的所有電子郵件定向到 PHP 腳本。伺服器主機名未設置為域(主機名預設為 ip-1-2-3-4.awsregion.internal.compute)。

我已將 support.mydomain.com 的 MX 記錄設置為指向 www.mydomain.com

根據我的閱讀,我需要一個virtual alias來處理域。

我試過了:

  • 添加@support.mydomain.com apache@localhost/etc/postfix/virtual
  • 跑步postmap /etc/postfix/virtual
  • 添加virtual_alias_maps = :hash:/etc/postfix/virtualinet_interfaces=all/etc/postfix/main.cf
  • 添加apache: "|php -q /var/www/mydomain/my-script.php"
  • 新別名
  • 後綴重新載入
  • 服務後綴重啟

/var/log/maillog顯示電子郵件“454 4.7.1 中繼訪問被拒絕”錯誤 - 至少這表明 DNS/防火牆是正常的……

將不勝感激從這裡去哪里或從一開始就提供新指南。

令人驚訝的是,Wombles 的評論很有幫助,我與最初的問題非常接近。

這對我有用。這是使用 Postfix 將一個域(不在主機名中)的所有電子郵件重定向/管道到 CentOS 伺服器上的 php 腳本(假設您已經處理了 DNS 和 selinux/防火牆):

  1. 虛擬別名

通過更新將電子郵件重定向到本地使用者/etc/postfix/virtual

@support.mydomain.com apache@localhost

使用 重建虛擬別名數據庫postmap /etc/postfix/virtual。 2. 告訴 Postfix 使用我們的虛擬別名數據庫/etc/postfix/main.cf

virtual_alias_maps = hash:/etc/postfix/virtual 3. 虛擬域

使用虛擬域更新/etc/postfix/main.cf,因此它知道接受您的域的電子郵件,否則您將收到“454 4.7.1 Relay access denied”錯誤:

virtual_alias_domains = support.mydomain.com 4. 接受連接

通過更新告訴 postfix 允許來自網際網路(不是 jsut 本地)的連接/etc/postfix/main.cf

inet_interfaces=all 5. 更新別名

更新/etc/aliases以將發送給本地使用者的電子郵件重定向到腳本:

#apache:root(取消連接本地使用者的任何現有條目) apache: "|sudo /usr/bin/php -q /var/www/mydomain.com/my-script.php" 6. 重建別名並重啟 Postfix

sudo newaliases sudo postfix reload sudo service postfix restart

我希望這對其他人有所幫助,似乎沒有關於此的編譯/簡潔的文章。

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