postfix:如何生成退回邮件

postfix:如何生成退回邮件

有没有办法通过编程生成反弹?我唯一找到的是 sendmail 包装器中的“-N”标志,bounce_template_file配置参数:

/usr/sbin/sendmail -N failure

但出于某种原因,它会生成一条常规消息。甚至不使用退回模板。

场景如下:postfix 接受了来自外部的消息并通过 SMTP 将其推送到外部过滤器。根据策略,我们决定拒绝该消息。现在我们需要生成 NDR。如何使用 postfix 执行此操作?

谢谢!

答案1

您只需创建一封新电子邮件并将其发送给发件人即可。

一种方法是将其转移到脚本 - 例如使用传输表来捕获电子邮件,并使用主表将输出传送到脚本以生成退回响应。

主表中的条目可能看起来像

bouncer
    unix    -   n   n   -   -   pipe flags=Rq
    user=nobody argv=/path/to/bounce.script ${sender} ${recipient}

您不必将消息发送到 REJECT,而是将其发送到“bouncer”。不确定您是如何拒绝它的,所以不确定如何告诉它转到 bouncer。我猜您可以使用传输表来实现这一点,或者使用带有 FILTER 目标的 header_checks 表。

用于发回退回消息(未经测试)的简单 PHP 脚本可能类似于以下内容:

#! /usr/bin/php
<?php
      # Make sure phpmailer is installed !  (apt-get install phpmailer
      # or download from source and adjust path)
      include phpmailer/class.phpmailer.php

      $from=$argv[1];
      $to=$argv[2];

      $tz=date_default_timezone_get();
      date_default_timezone_set($tz);

      $message="Bounce Message text here";
      $msg=new PHPMailer();
      $msg->From=$to;
      $msg->FromName=$from;
      $msg->Subject="Bounce Notification Subject Line";
      $msg->Body="Bounce Notification Message";
      $msg->AddAddresses($from);
      $msg->send();
  ?>

相关内容