Email

sendmail 的 /etc/aliases 中的管道程序

  • April 20, 2019

我正在嘗試通過自製腳本進行某種自動訂閱​​。我知道這可以通過 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

引用自:https://unix.stackexchange.com/questions/6571