將域的所有 Postfix 電子郵件通過管道傳輸到 PHP 腳本 - Centos7/EC2
我已經閱讀了幾篇文章,包括此處的文章,但似乎沒有一個明確簡潔的答案。
我讓 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/virtual
和inet_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/防火牆):
- 虛擬別名
通過更新將電子郵件重定向到本地使用者
/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
我希望這對其他人有所幫助,似乎沒有關於此的編譯/簡潔的文章。