LINUX.ORG.RU
ФорумAdmin

Postfix, создание белого списка


0

1

Возникла идея создать белый список почтовых адресов, заполнятся он будет адресами получателей писем от моих пользователей, так как количество пользователей переваливает за тысячу, думаю использовать sql.

Не кто не чего подобного не делал? Интересует парсер логов postfix, предложили переделать atslog, осилить не могу)


Ответ на: комментарий от BartMan

у меня там только домены

 somedomain.by OK
   check_sender_access hash:.....file

ничти не мешает прикрутить туда mysql

guilder
()
Ответ на: комментарий от guilder

Вот и мне походу остается делать скрипт который раз в промежуток времени парсит адреса получателей и кидает их в базу, а еще надо очищать список от неиспользуемых адресов, проблем до ж....

BartMan
() автор топика
Ответ на: комментарий от BartMan

ещё можно проделать следующий финт если нужны только адреса - забирать их при проходе через спамфильтр ( у меня сапмасассин )

guilder
()
Ответ на: комментарий от BartMan

master.cf

[code]

spamfilter    unix   -   n   n   -   -   pipe    flags=Rq user=spamfilter argv=/usr/local/bin/spamfilter -f ${sender} — ${recipient} [/code]

spamfilter

[code=bash] #!/bin/sh cat | /usr/bin/spamassassin > /tmp/out.$$.tmp

echo «`date` $@» >> /tmp/transfer.log

cat /tmp/out.$$.tmp | /usr/sbin/sendmail -i «$@» [/code]

для твоего варианта будет достатолно

[code] #!/bin/sh cat | /usr/sbin/sendmail -i «$@»

[/code]

guilder
()
Ответ на: комментарий от guilder

master.cf


spamfilter    unix   -   n   n   -   -   pipe    flags=Rq user=spamfilter argv=/usr/local/bin/spamfilter -f ${sender} -- ${recipient} 

spamfilter

 

#!/bin/sh cat | /usr/bin/spamassassin > /tmp/out.$$.tmp

echo "`date` $@" >> /tmp/transfer.log

cat /tmp/out.$$.tmp | /usr/sbin/sendmail -i "$@" 

для твоего варианта будет достатолно

 
#!/bin/sh 
cat | /usr/sbin/sendmail -i "$@"

guilder
()

main.cf: [code] smtpd_recipient_restrictions = ... # Это добавляет получателей из писем от наших юзеров в вайтлист check_policy_service unix:private/whitelist ... # А это проверяет наличие в вайтлисте юзеров check_recipient_access proxy:mysql:/var/lib/postfix/mysql/recipient_whitelist.mysql [/code]

master.cf: [code] ... whitelist unix - n n - 0 spawn user=nobody:nobody argv=/opt/scripts/postfix/postfix-whitelist.pl ... [/code]

postfix-whitelist.pl: [code] #!/usr/bin/perl -wT

use lib '/opt/scripts'; use strict; use warnings; use KRCOMMON;

### Unbuffer output ### $|=1;

### Postfix attribute parsing ### my %attr; my $tmp = ";

while(my $row = <STDIN>) { $tmp .= $row;

$row =~ s/\r?\n//; if($row =~ /^([^=]+)=(.*)$/) { $attr{$1} = $2; } else { last; } }

my $dbh = db_connect(); my $rcpt = lc($attr{'recipient'});

if(($attr{'client_address'} =~ /^10\.|^127\.0\.0\.1$/ or defined $attr{'sasl_username'}) and not $rcpt =~ /\@domain\.ru$/) { $dbh->do(«INSERT INTO `email_whitelist` (`email`, `datetime`, `client_ip`) VALUES('».$rcpt.«', NOW(), '».$attr{'client_address'}.«')»); $dbh->disconnect(); }

print «action=DUNNO\n\n»;

exit 0; [/code]

Как-то примерно так.

blind_oracle ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.