Postfix / Amavis:忽略本地帐户外发邮件过滤器,虚拟外发过滤

时间:2014-07-31 18:06:22

标签: email filter local postfix-mta

我有一个postfix邮件服务器,它使用mail()通过PHP脚本从虚拟地址和本地Unix帐户发送电子邮件。

我安装了Amavis并成功配置了虚拟地址的过滤和添加邮件签名,但是没有为本地帐户发送的任何邮件添加签名(例如通过脚本或邮件命令)< / p>

我尝试了一堆配置和路由更改,但没有运气 - 有没有人请知道如何过滤这样的本地外发邮件?

谢谢!

2 个答案:

答案 0 :(得分:2)

为了将来参考,答案是后缀配置设置:

non_smtpd_milters =

后缀内容过滤设置(content_filter)似乎不适用于非smtpd流量,例如Unix帐户或PHP mail()脚本发送的流量。

实际上这是错误的。来自邮件列表上的Stef 未通过milter界面实现更改邮件正文

查看以下文档: - http://www.amavis.org/README.postfix.html - http://www.postfix.org/FILTER_README.html [高级内容过滤器示例]

快速浏览配置文件[这是我的配置文件中的快速剪切和粘贴;请注意端口号可能与上述文档不匹配]:

/etc/amavisd.conf

$notify_method  = 'smtp:[127.0.0.1]:10025';
$forward_method = 'smtp:[127.0.0.1]:10025';

$inet_socket_port = [10024, 10026];

$interface_policy{'10026'} = 'ORIGINATING';

$policy_bank{'ORIGINATING'} = {  # mail supposedly originating from our users
  originating => 1,  # declare that mail was submitted by our smtp client
  allow_disclaimers => 1,  # enables disclaimer insertion if available
}

/etc/postfix/master.cf

smtp      inet  n       -       n       -       -       smtpd
  -o content_filter = smtp-amavis:[127.0.0.1]:10024

[您也可以将/etc/postfix/main.cf中的上述config_filter配置作为默认设置。   以下选项将覆盖main.cf]中的默认值

smtp-amavis unix -      -       n       -       4       smtp
  -o smtp_data_done_timeout=1200
  -o smtp_send_xforward_command=yes
  -o disable_dns_lookups=yes
  -o max_use=20
  -o smtp_generic_maps=
localhost:10025 inet n  -       n       -       -       smtpd
  -o content_filter=
  -o local_recipient_maps=
  -o relay_recipient_maps=
  -o smtpd_delay_reject=no
  -o smtpd_authorized_xforward_hosts=127.0.0.0/8,[::1]/128
  -o smtpd_authorized_xclient_hosts=127.0.0.0/8,[::1]/128
  -o smtpd_client_restrictions=permit_mynetworks,reject
  -o smtpd_helo_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o smtpd_data_restrictions=reject_unauth_pipelining
  -o smtpd_end_of_data_restrictions=
  -o smtpd_restriction_classes=
  -o mynetworks=127.0.0.0/8,[::1]/128
  -o smtpd_error_sleep_time=0
  -o smtpd_soft_error_limit=1001
  -o smtpd_hard_error_limit=1000
  -o smtpd_client_connection_count_limit=0
  -o smtpd_client_connection_rate_limit=0
  -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
  -o local_header_rewrite_clients=
submission inet n       -       n       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
  -o content_filter=smtp-amavis:[127.0.0.1]:10026
pickup    unix  n       -       n       60      1       pickup
  -o content_filter=smtp-amavis:[127.0.0.1]:10026

快速评论: - 传入的电子邮件进入端口25;使用“content-filter”选项,它将被发送到端口10024上的mavis - amavis扫描,标签,隔离,...... - 如果邮件通过,它会转到(后缀)端口10025(这是通过amavisd.conf中的“$ forward_method”完成的) - postfix(侦听端口10025)发送电子邮件

  • 传出电子邮件应在提交端口[587]上输入或随提取服务一起提供(“本地电子邮件”)。
  • postfix将此电子邮件转发至端口10026(!)
  • 上的amavis
  • 因为“政策银行”而改变了amavis的配置
  • 再次,amavis将电子邮件转发到端口10025上的postfix
  • postfix(侦听端口10025)发送电子邮件

亲切的问候,

燕姿

答案 1 :(得分:0)

我遇到了类似的问题(在我的例子中,我使用 amavis 添加了 dkim 签名),结果证明问题在于,在 master.cf 中,取件服务是用“-o content_filter=”定义的,那就是为什么 content_filter 不适用于本地生成的电子邮件,即

pickup  fifo    n       -       n       60      1       pickup
  -o content_filter=
  -o receive_override_options=

一旦我注释掉“-o content_filter=”,amavis 甚至开始过滤本地生成的消息。

我正在添加一个解决方案,因为我无法添加评论,这是我搜索“postfix content_filter 不适用于本地生成的邮件”时的第一个结果。