Я хочу, чтобы SpamAssassin изучал исходящие сообщения как любительские, чтобы получатели автоматически добавлялись в белый список. Но у меня проблемы с его настройкой.
В идеале, Я просто хочу, чтобы Postfix передавал электронное письмо скрипту и продолжал нормальную обработку.
Я уже придумал решение с content_filter
, но оно не работает надежно, особенно когда я отправить нескольким людям, некоторые письма не доставляются. В журналах я вижу, что для некоторых получателей вызывается сценарий, но даже тогда только для некоторых из них электронное письмо действительно отправляется.
Так что, если возможно, я хотел бы чтобы избежать использования content_filter
. Есть ли другой способ? Если нет, что может быть не так с моей настройкой?
Вот что я получил прямо сейчас:
master.cf:
submission inet n - n - - smtpd
-o smtpd_client_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
-o content_filter=spamassassin-outgoing
spamassassin-outgoing unix - n n - - pipe
flags=u user=spamd:spamd argv=/usr/local/bin/learnoutgoing.sh ${sasl_username} ${sender} ${recipient}
learnoutgoing.sh:
#!/bin/bash
if [ -z "$3" ] ; then
echo "$0: <user> <sender> <recipient>"
exit 1
fi
/usr/bin/logger Learn outgoing: ''"$1"'' ''"$2"'' ''"$3"''
# Save the stdin into a temporary file, we need to feed it into two
# different programs.
TMPFILE=`mktemp /tmp/outgoing.XXXXXXXXXX`
cat >$TMPFILE
# The user passed in $1 is in format 'user@domain' but we just want the user
USER=`sed 's/@.*//' <<<$1`
# Learn the mail as ham.
/usr/bin/spamc -u "$USER" --learntype ham <$TMPFILE &>/dev/null || true
# Send it.
/usr/sbin/sendmail -oi -f "$2" "$3" <$TMPFILE
# Save the return value of sendmail
RETCODE=$?
# Cleanup and exit
rm -f $TMPFILE
exit $RETCODE
Я хочу, чтобы SpamAssassin изучал исходящие письма как любительские, чтобы получатели автоматически добавлялись в белый список
. Вы можете принять во внимание совет, данный в списке рассылки sa о подобной установке:
Возможно, это хорошая идея, но вы должны быть очень осторожны с ней вещь: убедитесь, что ваши пользователи достаточно сообразительны, чтобы не фишинговые аккаунты. Потребуется только один взломанный аккаунт, рассылает спам, чтобы разрушить полезность ваших байесовских данных.
Есть ли проблема с входящей электронной почтой, которая мотивирует ваш вопрос, или вы пытаетесь «подумать наперед» и решить потенциальную проблему, которую еще не видите?
Предложение (найдено по ссылке, которую я предоставил выше) использовать канал с sa-learn --ham
, я думаю, сработает в вашем случае, но рассмотрите проблемы, которые это может вызвать.
Чтобы немного расширить свой ответ на основе ваших комментариев:
Я думаю, что часть вашей проблемы связана с вашим скриптом - аналогичный скрипт, найденный на вики Apache.org SpamAssassin , использует $ @
, а не $ 1 / $ 2 / $ 3
- похоже, это могло бы каким-то образом объяснить ваши симптомы. Вместо этого они используют:
logger <<<"Spam filter piping to SpamAssassin, then to: $SENDMAIL $@"
${SPAMASSASSIN} | ${SENDMAIL} "$@"
В зависимости от ваших конкретных потребностей, Spamassassin пометил что-то как спам, но не спам. Как мне сказать об этом? может помочь: он предлагает периодически запускать spamc
или sa-learn
для изучения почтовых ящиков пользователей.
Однако у меня лично есть небольшая концептуальная проблема с настройкой, которую вы, кажется, описываете: по сути, вы, кажется, говорите, что создаете папку для спама для пользователей, но беспокоитесь, что они не будут ее проверять, чтобы вы хотели занести в белый список все ответные электронные письма.
Я бы подумал, что в таком случае будет проще не иметь папку «Спам» и просто разрешить отправку сообщений, помеченных как потенциально спам, пользователям «в обычном режиме», но с пометками, связанными со спамом (если только это не действительно плохой, а то его надо на карантин).
Это чистое мнение с моей стороны: вероятно, вы знаете и понимаете своих пользователей лучше, чем я. Я просто подумал, что в целом пользователи будут знать, что нужно проверять папку со спамом на предмет действительно важного.