Email
sendmail 的 /etc/aliases 中的管道程序
我正在嘗試通過自製腳本進行某種自動訂閱。我知道這可以通過 Mailman 等郵件列表來實現,但我也想同時學習如何手動完成。
這是簡單的腳本:
#!/usr/bin/perl use strict; use warnings; open ("RCV_MAIL", ">>/home/icasimpan/mail_received.txt") or die $!; while(<STDIN>){ print RCV_MAIL; } close(RCV_MAIL);
我使用以下語法將上述腳本附加到 /etc/aliases 中:
subscribe: | /home/icasimpan/parse-subscribe.pl
並執行
$ sudo newaliases
它仍然是一個非常簡單的腳本。只是測試我在 /etc/aliases 中的語法是否正確。
但是當我嘗試通過電子郵件發送 subscribe@mydomaintests.tld 時,它會返回如下內容:
Delivery failure 69
我正在使用 Lotus Notes,所以我的Google搜尋將我定向到此連結。顯然,與文件有關…不確定。
該命令是可執行的,實際上我嘗試將其設置為 777,甚至在目錄中創建了 mail_received.txt 以確保我沒有文件權限問題但仍然相同。
如果您正在執行設置了 smrsh 的 sendmail(在許多預設配置中很常見),您將需要從 /etc/smrsh/ 執行管道命令。它可以是符號連結或腳本的副本,但如果 sendmail 定義了“smrsh”,則需要從該目錄執行。例如:
subscribe: | /etc/smrsh/parse-subscribe.pl
查看 smrsh 上的 sendmail 文件以獲取更多詳細資訊。
如果其中有空格,則需要引用“別名”:
subscribe: "| /home/icasimpan/parse-subscribe.pl"
或刪除空格:
subscribe: |/home/icasimpan/parse-subscribe.pl