1

操作系统:FreeBSD-11.1

名称:amavisd-new-2.11.0_2,1

我们最近开始从我们的邮件日志中报告的 amavisd 收到这些错误:

 . . .
 proxy-reject: END-OF-MESSAGE: 451 4.5.0 Error in processing,
 id=29937-07, quar+notif FAILED:
 mail_dispatch: no recognized protocol name: -2
 at /usr/local/sbin/amavisd line 9638.;
 . . .

这些错误中的每一个都是由处理来自单个域的消息引起的。但是,并非来自该域的所有流量都会生成错误。

消息中提到的 amavisd 中的代码部分如下:

   9619   my $any_deliveries = 0;
   9620   my $per_recip_data = $msginfo->per_recip_data;
   9621   my $num_recips_notdone =
   9622     scalar(grep(!$_->recip_done && (!$filter || &$filter($_)),
   9623                 @$per_recip_data));
   9624   while ($num_recips_notdone > 0) {
   9625     # a delivery method may be a scalar of a form protocol:socket_specs, or
   9626     # a listref of such elements; if a list is provided, it is expected that
   9627     # each entry will be using the same protocol name, otherwise behaviour
   9628     # is unspecified - so just obtain the protocol name from the first entry
   9629     #
   9630     my(%protocols, $any_tempfail);
   9631     for my $r (@$per_recip_data) {
   9632       if (!$dsn_per_recip_capable) {
   9633         my $recip_smtp_response = $r->recip_smtp_response;  # any 4xx code ?
   9634         if (defined($recip_smtp_response) && $recip_smtp_response =~ /^4/) {
   9635           $any_tempfail = $recip_smtp_response . ' (' . $r->recip_addr . ')';
   9636         }
   9637       }
   9638       if (!$r->recip_done && (!$filter || &$filter($r))) {
   9639         my $proto_sockname = $r->delivery_method;
   9640         defined $proto_sockname
   9641           or die "mail_dispatch: undefined delivery_method";
   9642         !ref $proto_sockname || ref $proto_sockname eq 'ARRAY'
   9643           or die "mail_dispatch: not a scalar or array ref: $proto_sockname";
   9644         for (ref $proto_sockname ? @$proto_sockname : $proto_sockname) {
   9645           local($1);
   9646           if (/^([a-z][a-z0-9.+-]*):/si) { $protocols{lc($1)} = 1 }
   9647           else { die "mail_dispatch: no recognized protocol name: $_" }
   9648         }
   9649       }
   9650     }

但我不知道所寻求的协议名称是从哪里获得的。由于错误,有问题的邮件没有放在隔离文件夹中,所以我无法检查它。

这是我们的配置错误还是电子邮件传输格式错误的结果?无论哪种情况,我能做些什么来解决这个问题?

4

0 回答 0