[Карта]
[Начало]
[Sendmail-ссылки]
[Синтаксис]
[Типовые задачки]
[Задачки по маршрутизации]
[Задачки по маскарадингу]
[SendmailACL]
[Spamooborona]
[VadeRetro]
[Regex]
[Тонкости]
[Недок.особен.]
[Несущ.юзеры]
[Прячемся!]
[RFC1893.Цитаты]
[ТП.Эмоции]
[Антиспам&Разум]
Procmail. Задачки.
0. Немного теории.
1. Извещение получателя письма о том, что письмо с подозрительным вложением было отложено в карантин.
2. Письмо со вложением (файл Excel) для одного получателя раскладываем по дополнительным ящикам.
3. Письма со ссылками на фильмы и не только откладываем в отдельный файл, если они не от root'a..
4.
5.
6.
100. Ссылки.
0. Немного теории.
Procmailrc.5 гласит:
Рецепты
Строка, начинающаяся с ':', помечает начало рецепта. Он имеет следующий формат:
:0 [флаги] [ : [локальный lock-файл] ]
<ноль или более условий (по одному на каждую строку)
<ровно одна строка действия>
Условия начинаются с символа '*'. Все, что следует за этим символом (за исключением первого и последнего пробелов), передается внутреннему egrep.
Эти регулярные выражения полностью соответствуют обычным расширенным регулярным выражениям egrep(1)
Над условиями выполняется логическое И. Если условия отсутствуют, то значением по умолчанию будет "истина".
Весьма показательны примеры из procmailex.5:
:0
* ^From.*peter
* ^Subject:.*compilers
{
:0 c
! william@somewhere.edu
:0
petcompil
}
An equivalent solution that accomplishes the same:
:0 c
* ^From.*peter
* ^Subject:.*compilers
! william@somewhere.edu
:0 A
petcompil
An equivalent, but slightly slower solution that accomplishes the same:
:0 c
* ^From.*peter
* ^Subject:.*compilers
! william@somewhere.edu
:0
* ^From.*peter
* ^Subject:.*compilers
petcompil
1. Извещение получателя письма о том, что письмо с подозрительным вложением было отложено в карантин.
Данный конфиг позволяет складывать почту с подозрительными вложениями в отдельный файл, при этом получателю письма
высылается извещение об этом. Как уже неоднократно говорилось, средствами sendmail.cf невозможно делать разбор тела письма, в котором и находится
информация о вложениях.
Лог procmail'a:
LOGFILE=/var/log/procmaillog
05.05.2009. Следующие два правила имеют побочный эффект, который делает их применение неприемлемыми:
если в строке To: указано несколько получателей (N), первым из которых значится именно someuser, то someuser получит письмо N раз.
Значит, если пользоваться таким правилом, нужно ограничить адрес получателя признаком конца строки $.
Но здесь еще не учтен вариант To: I.I.Ivanov< someuser@anrb.ru >.
Пользователи someuser & otheruser получают нормальную (незараженную) почту с перечисленными ниже вложениями с определенного адреса,
поэтому их почту не фильтруем.
:0
* ^To: someuser@anrb.ru$
/var/spool/mail/someuser2
:0
* ^To: otheruser@anrb.ru$
/var/spool/mail/otheruser2
Отправитель, который посылает моим клиентам нормальную (незараженную) почту с перечисленными ниже вложениями,
в качестве получателя указывает _иногда_ в поле "To:" и такой (единственный!) адрес получателя (список рассылки), прописывая между тем моих юзеров в "Bcc:"
:0
* ^To: hotline@somedomain.ru
/var/spool/mail/someuser
Далее проверяем тело письма (B), при этом после этой проверки (если она дала положительный результат) продолжаем исполнять конфиг (c)
:0 B c
*^.+name="(.+card.exe|.+(elm|log|txt|msg|dat|log).(pif|scr|bat|exe|cmd)|(Update-KB.*|postcard|setup|video|.+story|setup).(exe|zip)|(document|docs|doc|readme|test|body|message|messages|file|text|data|msg|Page|Mail).zip)"
Складываем это добро в:
/var/spool/mail/virus/virus
Теперь формируем извещение пользователю:
:0 A
Это для того, чтобы избежать зацикливания:
* !^X-Loop: loop@loop.anrb.ru
{
SHELL=/bin/bash
Выцарапываем из заголовка адрес отправителя:
Snd=`formail -xFrom:`
А также получателя:
Recip=`formail -xTo:`
На тот случай, когда получателей несколько следует использовать подход посложнее:
Recip=`formail -xTo:|egrep -o "[[:alnum:]]+@anrb.ru"|tr "\n" ","|sed 's/,$//g'`
Его минус в том, что количество извещений продублируется согласно количеству получателей вашего домена
Дублирование также возникнет, если письмо пришло проалисенному юзеру.
Как с этим бороться, пока не знаю.
Наш лог по поводу фильтрации будет болтливым:
VERBOSE=on
LOGABSTRACT=all
И будет записываться сюда:
LOGFILE=/var/log/suspic
А теперь формируем сообщение (i - игнорируем сообщение об ошибках):
:0i
| ( formail -rI"From: postmaster@anrb.ru" -I"To:$Recip" -I"Subject: Suspicious attachment in the mail for you."
-A"X-Loop: loop@loop.anrb.ru" ; date ; cat /etc/1251-1 ; echo $Snd ; cat /etc/1251-2 ; cat /etc/koi8-1 ; echo $Snd ; cat
/etc/koi8-2 ; cat /etc/en1 ; echo $Snd ; cat /etc/en2 ) | /usr/sbin/sendmail -t
}
Пользователь получит следующее сообщение:
"Fri May 25 18:16:23 YEKST 2007
Сообщение, посланное отправителем Mail Delivery Subsystem
(возможно, адрес подделан), не было вам доставлено, потому
что содержит подозрительное вложение.
Сообщение сохранено в архиве.
Если вы хотите его получить, сообщите об этом postmaster@anrb.ru
================================================================
уППВЭЕОЙЕ, РПУМБООПЕ ПФРТБЧЙФЕМЕН Mail Delivery Subsystem
(ЧПЪНПЦОП, БДТЕУ РПДДЕМБО), ОЕ ВЩМП ЧБН ДПУФБЧМЕОП, РПФПНХ
ЮФП УПДЕТЦЙФ РПДПЪТЙФЕМШОПЕ ЧМПЦЕОЙЕ.
уППВЭЕОЙЕ УПИТБОЕОП Ч БТИЙЧЕ.
еУМЙ ЧЩ ИПФЙФЕ ЕЗП РПМХЮЙФШ, УППВЭЙФЕ ПВ ЬФПН postmaster@anrb.ru
=================================================================
Dear user,the message sent to you from Mail Delivery Subsystem
has not been delivered, because contains an
suspicious attachment.
The original message was stored in archive.
In order to receive the original message, please send request to postmaster@anrb.ru.
"
Nota Bene! При указанном раскладе есть одна проблема: если письмо с "нехорошим" вложением приходит на список рассылки, то каждому
участнику рассылки сваливается n-ое количество извещений, где n - число участников рассылки.
Если кто-нибудь знает, как эту проблему обойти - буду признательна, если поделитесь.
Будет время, добью это дело сама.
2. Письмо со вложением (файл Excel) для одного получателя раскладываем по дополнительным ящикам.
:0
* ^To:.*paradise@anrb.ru.*
{
:0 B
Хотя здесь не указан флаг D (нижний и верхний регистры различаются), я все же указала Content-Type в обоих регистрах.
У меня было мало времени на тестирование этого правила, и не всегда оно срабатывало. Окончательно разобраться не удалось, так как скоро в нем необходимость отпала.
* ^(.+name=".+.xls"|Content-Type: (application/vnd.ms-excel|APPLICATION/VND.MS-EXCEL).*)
{
:0 c:
/var/spool/mail/gatling
:0 c:
/var/spool/mail/terrapin
:0:
/var/spool/mail/consiglio
}
}
3. Письма со ссылками на фильмы и не только откладываем в отдельный файл, если они не от root'a.
:0 B
* http://(www.meqaproqenq.ru|p1\.fr/.|simurl.com/marher|www.slimlite.ru|xet.ru/|bazasite.ru|ticuryqudy.kogaryu.com|flopping.virtualgost.com)|745\-95\-87|vertex\-nsk.ru|getz.74@yandex.ru|mdsbook@gooddvdgood.ru|Hang Seng Bank Limited
{
:0
* !^Return-Path: <root@mail.anrb.ru>
/var/spool/mail/filmspam
}
100. Ссылки по procmail:
[1]
[2]
Ошибка "Error while writing to ..."
"Error while writing to" is in the procmail manpage ('man procmail'), where
it is described as "Nonexistent subdirectory, no write permission, pipe
died or disk full."
[3]
[4]
sendmail + procmail - дублирование почты
Документация к procmail на рус.яз.
procmailex - примеры файлов настройки procmail [на рус.яз.]
procmailex - примеры файлов настройки procmail
You need to run 'chmod g+s /usr/bin/procmail'
[5]
procmailrc - файл настроек procmail
Обратная связь
Последнее обновление: 23 ноября 2009 г.
------------