我正在试图弄清楚如何让这个电子邮件管道工作在我正在做的脚本中。在CPanel中,我已将其设置为转发到:
当前设置:| /home/user/public_html/cgi-bin/links/email-in.cgi
脚本非常简单:
#!/usr/local/bin/perl
use strict;
use lib '/home/user/public_html/cgi-bin/links/admin';
use Links qw/$DB $IN $CFG/;
use CGI::Carp qw(fatalsToBrowser);
use Links;
Links::init('/home/user/public_html/cgi-bin/links/admin');
open (STDERR, ">>/home/user/public_html/cgi-bin/links/mail.log") || die $!;
my $message;
while (<STDIN>) {
$message .= $_;
}
print STDERR qq|$message\n\n|;
close (STDERR);
print $IN->header;
print "FOO BAR";
然后向该地址发送测试电子邮件,我在email.log中正确地看到了<STDIN>
的值。但是,大约一分钟之后,我收到了这封电子邮件:
此邮件是由邮件传递软件自动创建的。
您发送的邮件无法发送给其中一个或多个邮件 收件人。这是一个永久性错误。以下地址 失败:
管道到| /home/user/public_html/cgi-bin/links/email-in.cgi 由foo@resa.site.org生成
在传递尝试期间生成了以下文本:
------管道到| /home/user/public_html/cgi-bin/links/email-in.cgi 由foo@resa.site.org生成------
内容类型:text / html;字符集= ISO-8859-1
FOO BAR行动:最终收件人失败: rfc822; | /home/user/public_html/cgi-bin/links/email-in.cgi状态: 5.0.0
我为什么这样做有点困惑。我是否需要返回特定的标题,或类似的东西? (告诉电子邮件程序它已被正确处理)
答案 0 :(得分:2)
Eugh,我知道会发生这种情况!我一发布,就在这里找到了答案:
https://confluence2.cpanel.net/display/ALD/Forwarders#Forwarders-PipetoaProgram
如果你的脚本产生任何输出,即使是一个空行,系统也会 创建包含该输出的退回邮件。