如何使用 MIMEDefang 和 Postfix 来过滤电子邮件?我不想编写 SMTPD 处理程序,我能找到的有关 MIMEDefang 的所有信息都与如何将其与 Sendmail 一起使用有关。
答案1
我打算把它扔在这里,因为我昨天才做了这个:
你不需要自己动手做任何事情。你所需要的只是postfix
、libmilter
和mimedefang
EPEL 中提供的 RPM,因此它们应该在其他实际有库存的发行版中可用当前的版本的软件包,而不是 EL 存储库使用的 4-6 年前的版本。但我离题了。
在 Centos 6.5 上只需:
yum install mimedefang
它将爬取并获取sendmail-milter
[aka libmilter
] 作为依赖项的一部分。[SpamAssassin 也是如此]
在此之后,我建议将 MIMEdefang 的套接字设置更改为使用 inet 套接字而不是 unix 套接字。这主要是为了避免权限问题,因为我懒得寻找适用于 Postfix 和 MD 的用户和权限组合。
取消/etc/sysconfig/mimedefang
注释并将该SOCKET
行编辑为:
SOCKET=inet:10997
随意设置端口,10997 是我的随机选择。
现在:
service mimedefang start
chkconfig mimedefang on
现在您可以简单地将 milter 配置添加到main.cf
或作为以下smtpd -o
内容master.cf
:
smtpd_milters = inet:10997
答案2
构建或安装mimedefang
(我使用 yum,因为这是在 CentOS 6.4 系统上完成的)。这也会安装 sendmail,但不要惊慌 - 这是软件的要求。如果您正在构建,请注意您将需要此依赖项。
要使用此过程编写过滤器,您需要搜索并修改名为 的文件mimedefang-filter
。有许多可用的示例,并且根据您是否进行了自我构建或使用了 RPM,您的系统上可能有一个或多个可用示例。将此文件放入/etc/邮件并确保它是可执行的。
创建一个名为的文件夹/var/spool/MIMEDefang。
找到服务控制代码mimedefang
并将其放入/etc/init.d。使其可执行。使用编辑器打开此代码并查找如下部分:
# Tricky stuff below... "echo -E" won't work, hence the two-step.
daemon $PROGDIR/$prog-multiplexor -p /var/spool/MIMEDefang/$prog-multiplexor.pid \
$([ -n "$FILTER" ] && echo "-f $FILTER") \
$([ -n "$SYSLOG_FACILITY" ] && echo "-S $SYSLOG_FACILITY") \
$([ -n "$SUBFILTER" ] && echo "-F $SUBFILTER") \
... more lines follow with the same formatting...
$([ "$MX_STATS_SYSLOG" = "yes" ] && echo "-T") \
$([ "$MD_ALLOW_GROUP_ACCESS" = "yes" ] && echo "-G") \
$([ -n "$MX_NOTIFIER" ] && echo "-O $MX_NOTIFIER") \
echo "-U defang" \ <--------****** ADD THIS LINE ****
-s $MX_SOCKET
找到下一个以如下内容开头的部分:
daemon $PROGDIR/$prog -P /var/spool/MIMEDefang/$prog.pid \
-m $MX_SOCKET \
$([ -n "$LOOPBACK_RESERVED_CONNECTIONS" ] && echo "-R $LOOPBACK_RESERVED_CONNECTIONS") \
$([ -n "$MX_USER" ] && echo "-U $MX_USER") \
... follow it down....
$([ "$ALLOW_NEW_CONNECTIONS_TO_QUEUE" = "yes" ] && echo "-q") \
echo "-U defang" \ <----------*** ADD THIS LINE ****
-p $SOCKET
按照此代码段一直到“return $RETVAL”行之前。添加此行:
chmod oug+rw /var/spool/MIMEDefang/*.sock
如果不这样做,postfix 将无法与该mimedefang
进程通信。
退出,保存并使用 chkconfig 或任何您喜欢的方式将其添加到您的服务中。
最后一步:打开/etc/postfix/main.cf并添加以下几行:
smtpd_milters = unix:/var/spool/MIMEDefang/mimedefang.sock
milter_default_action = accept
现在 - 停止 postfix,启动 mimedefang,然后重新启动 postfix。检查日志中是否有有趣的内容,然后继续处理您的业务。