Как использовать MIMEDefang с Postfix для фильтрации электронной почты? Я не хочу писать обработчик SMTPD, и вся информация, которую я могу найти о MIMEDefang, относится к тому, как использовать его с Sendmail.
Собираюсь бросить это сюда, поскольку я сделал это вчера:
Вам не нужно ничего катить самостоятельно. Все, что тебе нужно postfix
, libmilter
, и mimedefang
RPM, для которых доступны в EPEL, поэтому они должны быть доступны в других дистрибутивах, которые на самом деле есть ток версии пакетов, а не версии 4-6-летней давности, которые делают репозитории EL. Но я отвлекся.
На Centos 6.5 просто:
yum install mimedefang
который выйдет и получит sendmail-milter
[он же 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
Либо построить, либо установить mimedefang
(Я использовал yum, поскольку это было сделано в системе CentOS 6.4). Это также установит sendmail, но не беспокойтесь - это требование для программного обеспечения. Если вы создаете, заметьте, что вам понадобится эта зависимость.
Чтобы написать milter, используя этот процесс, вам нужно найти и изменить файл с именем mimedefang-filter
. Доступно множество примеров, и в зависимости от того, выполняли ли вы самостоятельную сборку или использовали RPM, в вашей системе может быть один или несколько. Поместите этот файл в / etc / mail и убедитесь, что он исполняемый.
Создайте папку под названием / 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. Проверяйте свои журналы, чтобы узнать больше, и продолжайте заниматься своими делами.