|
Компьютерный форум OSzone.net » Linux и FreeBSD » Программное обеспечение Linux и FreeBSD » spamassassin - пустые письма |
|
spamassassin - пустые письма
|
Пользователь Сообщения: 112 |
Профиль | Отправить PM | Цитировать
Здравствуйте!
После внедрения фильтра spamassassin на smtp сервере postfix, появилась особенность - стали приходить пустые письма. Вот пример: Return-Path: <favoritesa387@visitlanka.com> Received: from Win-Relay ([10.0.0.3]) by mserv.mydomain.local for admin@mydomain.ru; Fri, 13 Feb 2009 02:54:28 +0300 Received: from relay.mydomain.ru ([10.0.0.21]) by Win-Relay (NAVIEG 2.1 bld 63) with SMTP id M2009021302555904113 for <admin@mydomain.ru>; Fri, 13 Feb 2009 02:55:59 +0300 Received: from spamfilter (localhost [127.0.0.1]) by localhost (Postfix) with ESMTP id 0491B4B815 for <admin@mydomain.ru>; Fri, 13 Feb 2009 02:54:28 +0300 (MSK) Message-Id: <20090212235428.0491B4B815@relay.mydomain.ru> Date: Fri, 13 Feb 2009 02:54:28 +0300 (MSK) From: favoritesa387@visitlanka.com Подозреваю что вной всему послужил скрипт обеспечивающий связку postfix + spamassassin, ниже описание связки: # cat /usr/local/etc/postfix/master.cf ... smtp inet n - n - - smtpd -o content_filter=spamfilter ... localhost:10027 inet n - n - 33 smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_helo_restrictions= -o smtpd_client_restrictions= -o smtpd_sender_restrictions= -o mynetworks=127.0.0.0/8 -o smtpd_recipient_restrictions=permit_mynetworks,reject -o myhostname=localhost spamfilter unix - n n - 33 pipe flags=R user=spamd argv=/usr/local/bin/spamcс localhost:10027" "spamfilter" "${sender}" "${recipient}" "/usr/local/bin/spamc" # cat /usr/local/bin/spamcc #!/usr/bin/perl -w use strict; use Net::SMTP; my $host = &sall_ch(shift(@ARGV), '"'); my $ehlo = &sall_ch(shift(@ARGV), '"'); my $mail_from = &sall_ch(shift(@ARGV), '"'); my $rcpt_to = &sall_ch(shift(@ARGV), '"'); my $spamc = &sall_ch(shift(@ARGV), '"'); if (!defined($host)||!defined($ehlo)||!defined($mail_from)||!defined($rcpt_to)) { die("use $0 <host> <ehlo> <mail_from> <rcpt_to> [cmd]\n"); } if (defined($spamc)) { open(CF, "$spamc |") or undef($spamc); } my $smtp = Net::SMTP->new($host); $smtp->hello($ehlo); $smtp->mail($mail_from); $smtp->to($rcpt_to); $smtp->data(); if (defined($spamc)) { while(<CF>) { next if (/^delivered\-to\:/i); $smtp->datasend($_); } } else { while(<>) { next if (/^delivered\-to\:/i); $smtp->datasend($_); } } $smtp->dataend(); close(CF) if defined($spamc); $smtp->quit; exit 0; ############################################################ sub sall_ch($$) { my($string, $chars) = (shift(), shift()); return(undef) unless defined($string); $string =~ s/^[\Q$chars\E]+//; $string =~ s/[\Q$chars\E]+$//; return($string); } |
|
Отправлено: 09:24, 13-02-2009 |
Пользователь Сообщения: 112
|
Профиль | Отправить PM | Цитировать Подозреваю что проблема в скрипте, поделитесь пожалуйста любой мыслью, очень нада.....
|
Отправлено: 15:31, 17-02-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 43
|
Профиль | Отправить PM | Цитировать а зачем такие сложности, вот же простой howto как связать postfix и SA (spamassassin) : http://www.xnote.com/howto/postfix-spamassassin.html
без всяких усложнений типа localhost:10027 |
Отправлено: 17:18, 17-02-2009 | #3 |
Пользователь Сообщения: 112
|
Профиль | Отправить PM | Цитировать Да, я пробовал это, но при такой связке:
...sendmail пересылает письмо снова на постфикс и оно циклится, плюс ко всему, в постфиксе настроены пранспорты, которых sendmail не знает, в частности одним из них является локальный сервис антивируса ClamSMTPd, который принимает почту на 127.0.0.1:10025. Может этого можно избежать? Не знаю как.... |
Последний раз редактировалось zelo, 18-02-2009 в 11:11. Причина: уточнение Отправлено: 11:08, 18-02-2009 | #4 |
Новый участник Сообщения: 43
|
Профиль | Отправить PM | Цитировать ну тогда я бы делал через mailscanner, то есть схема получилась бы такая - postfix отдает на mailscanner, он пропускает через clamd и SA, и возвращает postfix'у. howto на данную тему можно на google найти.
|
|
Отправлено: 14:21, 18-02-2009 | #5 |
Пользователь Сообщения: 112
|
Профиль | Отправить PM | Цитировать Нашёл причину резки писем!
Письма резались если поле получателей содержит больше одного адресата. Обычно, если получатель один, то скрипт вызывался вот с такими параметрами: А если получателей два и более, то с такими: "localhost:10027" "spamfilter" "outbox@domain.ru" "inbox1@domain.ru" "inbox2@domain.ru" "/usr/local/bin/spamc" Друзья! Помогите доработать скрипт! |
Отправлено: 10:28, 19-02-2009 | #6 |
Пользователь Сообщения: 112
|
Профиль | Отправить PM | Цитировать Решено!
Изменил скрипт до такого вида: #!/usr/bin/perl -w use strict; use Net::SMTP; my $host = &sall_ch(shift(@ARGV), '"'); my $ehlo = &sall_ch(shift(@ARGV), '"'); my $spamc = &sall_ch(shift(@ARGV), '"'); my $mail_from = &sall_ch(shift(@ARGV), '"'); my $rcpt_to = &sall_ch(shift(@ARGV), '"'); my $rcpt_to01 = &sall_ch(shift(@ARGV), '"'); my $rcpt_to02 = &sall_ch(shift(@ARGV), '"'); my $rcpt_to03 = &sall_ch(shift(@ARGV), '"'); my $rcpt_to04 = &sall_ch(shift(@ARGV), '"'); my $rcpt_to05 = &sall_ch(shift(@ARGV), '"'); my $rcpt_to06 = &sall_ch(shift(@ARGV), '"'); my $rcpt_to07 = &sall_ch(shift(@ARGV), '"'); my $rcpt_to08 = &sall_ch(shift(@ARGV), '"'); my $rcpt_to09 = &sall_ch(shift(@ARGV), '"'); my $rcpt_to10 = &sall_ch(shift(@ARGV), '"'); my $rcpt_to11 = &sall_ch(shift(@ARGV), '"'); my $rcpt_to12 = &sall_ch(shift(@ARGV), '"'); my $rcpt_to13 = &sall_ch(shift(@ARGV), '"'); my $rcpt_to14 = &sall_ch(shift(@ARGV), '"'); my $rcpt_to15 = &sall_ch(shift(@ARGV), '"'); my $rcpt_to16 = &sall_ch(shift(@ARGV), '"'); my $rcpt_to17 = &sall_ch(shift(@ARGV), '"'); my $rcpt_to18 = &sall_ch(shift(@ARGV), '"'); my $rcpt_to19 = &sall_ch(shift(@ARGV), '"'); my $rcpt_to00 = &sall_ch(shift(@ARGV), '"'); #if (!defined($host)||!defined($ehlo)||!defined($mail_from)||!defined($rcpt_to)) { # die("use $0 <host> <ehlo> <mail_from> <rcpt_to> [cmd]\n"); #} if (defined($spamc)) { open(CF, "$spamc |") or undef($spamc); } my $smtp = Net::SMTP->new($host); $smtp->hello($ehlo); $smtp->mail($mail_from); $smtp->to($rcpt_to); $smtp->to($rcpt_to01); $smtp->to($rcpt_to02); $smtp->to($rcpt_to03); $smtp->to($rcpt_to04); $smtp->to($rcpt_to05); $smtp->to($rcpt_to06); $smtp->to($rcpt_to07); $smtp->to($rcpt_to08); $smtp->to($rcpt_to09); $smtp->to($rcpt_to10); $smtp->to($rcpt_to11); $smtp->to($rcpt_to12); $smtp->to($rcpt_to13); $smtp->to($rcpt_to14); $smtp->to($rcpt_to15); $smtp->to($rcpt_to16); $smtp->to($rcpt_to17); $smtp->to($rcpt_to18); $smtp->to($rcpt_to19); $smtp->to($rcpt_to00); $smtp->data(); if (defined($spamc)) { while(<CF>) { next if (/^delivered\-to\:/i); $smtp->datasend($_); } } else { while(<>) { next if (/^delivered\-to\:/i); $smtp->datasend($_); } } $smtp->dataend(); close(CF) if defined($spamc); $smtp->quit; exit 0; ############################################################ sub sall_ch($$) { my($string, $chars) = (shift(), shift()); return(undef) unless defined($string); $string =~ s/^[\Q$chars\E]+//; $string =~ s/[\Q$chars\E]+$//; return($string); } |
Отправлено: 17:36, 19-02-2009 | #7 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Фильтрация спама в связке Spamassassin + Qmail + Debian | Unspammer | Программное обеспечение Linux и FreeBSD | 1 | 23-10-2008 19:17 | |
spamassassin прикрутить к postfix | zelo | Программное обеспечение Linux и FreeBSD | 1 | 18-09-2008 13:01 | |
Spamassassin - сразу удалять письма | Napasick | Общий по Linux | 1 | 02-07-2008 15:37 | |
FreeBSD 6.2-RELEASE и квест по установке Spamassassin | Negativ | Программное обеспечение Linux и FreeBSD | 2 | 13-05-2008 15:28 | |
spamassassin не обучается | zelo | Общий по FreeBSD | 1 | 14-09-2007 14:20 |
|