Re: Полезные скрипты/настройки для exim.
Добавлено: 2010-12-01 12:49:54
auto blacklist
Нарисовал автоблеклист на основе того, что писал выше.
дамп таблицы (заливать в базу с экзимом)
Два кондишена их писать в acl_check_rcpt(на весь домен блокируемого и только на ящик - вдруг вы захотите заблочить spam@ukr.net но не блокировать весь ukr.net)
Далее в acl_check_data
Как работает:
Вы отправляете письмо на ящик blacklist@blabla.dp.ua (ящик должен быть создан) И в теме письма указываете или весь домен целиком блокируемого или ящик. В базе появляется запись и в следующий раз письмо для юзера, который отправил запрос на ящик blacklist!!!!! с блокируемого домена (ящика), не придёт. Спасибо mastertronу за его чудные примеры. Далее по его примерам можно автоудалять с ящика ненужные письма, но я пока оставляю их для того что бы контролировать кто слал запросы на ящик и когда, пока не прикручу простенькую табличку на пхп.
Так же на основе всего этого можно нарисовать запрос для удаления записи из базы, если вы вдруг передумали блочить когото
Нарисовал автоблеклист на основе того, что писал выше.
дамп таблицы (заливать в базу с экзимом)
Код: Выделить всё
CREATE TABLE `user_blacklist` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`sender_address` varchar(255) CHARACTER SET latin1 NOT NULL DEFAULT '',
`local_recipient` varchar(255) CHARACTER SET latin1 NOT NULL DEFAULT '',
`added_date` date DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=24 DEFAULT CHARSET=utf8;
Код: Выделить всё
warn set acl_m1 =$local_part@$domain
# deny if in local user`s blacklist (sender_address)
deny message = Mailbox $sender_address of domain $sender_address_domain is in a personal blacklist of $local_part
senders = ${lookup mysql{SELECT `sender_address` FROM `user_blacklist` WHERE `sender_address` = ' ${quote_mysql:$sender_address}' AND `local_recipient` = '${quote_mysql:$local_part@$domain}'}}
log_message = Mailbox $sender_address of domain $sender_address_domain is in a personal blacklist of $local_part
# deny if in local user`s blacklist (sender_address_domain)
deny message = Mailbox $sender_address of domain $sender_address_domain is in a personal blacklist of $local_part
senders = ${lookup mysql{SELECT `sender_address` FROM `user_blacklist` WHERE `sender_address` = ' ${quote_mysql:$sender_address_domain}' AND `local_recipient` = '${quote_mysql:$local_part@$dom
log_message = Mailbox $sender_address of domain $sender_address_domain is in a personal blacklist of $local_part
Код: Выделить всё
# for blacklist
accept condition = ${if eq{blacklist@blabla.dp.ua}{$acl_m1}{yes}{no}}
hosts = +relay_from_hosts
condition = ${lookup mysql{INSERT INTO `user_blacklist` (sender_address, local_recipient, added_date) VALUES (TRIM(BOTH '\n' FROM '${quote_mysql:$rheader_Subject:}'), '${quote_mysql:$sender_addr
log_message = blacklist updated
Вы отправляете письмо на ящик blacklist@blabla.dp.ua (ящик должен быть создан) И в теме письма указываете или весь домен целиком блокируемого или ящик. В базе появляется запись и в следующий раз письмо для юзера, который отправил запрос на ящик blacklist!!!!! с блокируемого домена (ящика), не придёт. Спасибо mastertronу за его чудные примеры. Далее по его примерам можно автоудалять с ящика ненужные письма, но я пока оставляю их для того что бы контролировать кто слал запросы на ящик и когда, пока не прикручу простенькую табличку на пхп.
Так же на основе всего этого можно нарисовать запрос для удаления записи из базы, если вы вдруг передумали блочить когото