Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
wiki:фильтрация_спама_на_уровне_smtp_протокола [2010/08/17 00:30] |
wiki:фильтрация_спама_на_уровне_smtp_протокола [2010/12/27 23:00] (текущий) [Ссылки] |
||
---|---|---|---|
Строка 28: | Строка 28: | ||
<file> | <file> | ||
- | v=spf1 +mx -all | + | v=spf1 +mx ~all |
</file> | </file> | ||
- | для вашего домена скажет всем клиентам, поддерживающим проверку SPF, что письма из вашего домена могут приходить //исключительно// с серверов, указанных в MX записях. Можно сделать правило мягче, написав вместо **-all ~all**. За подробностями обращайтесь в Google и на [[http://www.openspf.org/|официальный сайт SPF]]. | + | для вашего домена скажет всем клиентам, поддерживающим проверку SPF, что письма из вашего домена вообще говоря должны приходить с серверов, указанных в MX записях. Можно сделать правило жёстче, написав вместо **~all -all**. За подробностями обращайтесь в Google и на [[http://www.openspf.org/|официальный сайт SPF]]. |
- | Всегда прописывайте SPF запись для домена, а так же включайте проверку SPF на своих почтовых серверах. Для организаций рекомендуется жёстко запрещать отправку писем из вашего домена со всех хостов, кроме ваших MX серверов. Вкупе с проверкой SPF на вашем сервере подобная настройка сразу срежет все письма, посылаемые со сторонних хостов от имени пользователей вашего домена на адреса пользователей вашего же домена. А такого спама чуть ли не половина, поскольку обычно SMTP серверы очень плохо защищены от писем из своего же собственного домена, и спамеры этим активно пользуются. SPF раз и навсегда избавит вас от писем Васе Пупкину, написанных судя по конверту Васей же Пупкиным, но пришедших с сервера в каком-нибудь Никарагуа. | + | <note warning>Учтите, что письма могут идти через ретрансляторы. Многие почтовые домены в интернете являются всего лишь ретрансляторами. Поэтому жёсткий запрет в SPF записях, а так же отсеивание спама только исходя из SPF информации, являются крайне нежелательными. Однако всё же всегда прописывайте SPF запись для домена, а так же включайте проверку SPF на своих почтовых серверах.</note> |
- | + | ||
- | <note important>Однако имейте ввиду, что [[http://rfc2.ru/2505.rfc|RFC 2505]] прямо запрещает ограничивать приём писем из собственного домена, но со сторонних хостов. Причины изложены в параграфе 2.6.2 документа по ссылке, однако они теряют свою актуальность в случае корпоративного домена. Поэтому с оглядкой на упомянутый RFC документ всё же можно запретить рассылать письма от вашего имени всем, кроме ваших серверов.</note> | + | |
Как настроить SPF в Postfix вам расскажет гугл, информации навалом и ошибиться нельзя, так что не будем тратить время на технический подробности. | Как настроить SPF в Postfix вам расскажет гугл, информации навалом и ошибиться нельзя, так что не будем тратить время на технический подробности. | ||
Строка 48: | Строка 46: | ||
Если вы не соблюдёте одно из этих требований - приготовьтесь к тому, что минимум четверть почты с вашего домена будет распознаваться как спам. Обусловлено это простым тезисом: благонадёжный отправитель всегда всё настраивает соблюдая правила, соответственно если правила не соблюдены - то отправителю доверять не следует, а значит и принимать от него почту - тоже. | Если вы не соблюдёте одно из этих требований - приготовьтесь к тому, что минимум четверть почты с вашего домена будет распознаваться как спам. Обусловлено это простым тезисом: благонадёжный отправитель всегда всё настраивает соблюдая правила, соответственно если правила не соблюдены - то отправителю доверять не следует, а значит и принимать от него почту - тоже. | ||
- | Ну а чтобы включить проверку PTR у себя, используйте опцию | + | ===== Присматриваемся к клиенту ===== |
+ | |||
+ | Итак, SMTP сессия начинается с попытки подключения от клиента. Соответственно вы получаете его IP и можете сделать кое-какие выводы только на его основании. Например, вы можете включить проверку PTR записи для клиента, для это используйте опцию | ||
<file> | <file> | ||
Строка 63: | Строка 63: | ||
В этом случае сервер будет проверять только наличие PTR записи, но не будет требовать существования соответствующей записи A. | В этом случае сервер будет проверять только наличие PTR записи, но не будет требовать существования соответствующей записи A. | ||
+ | |||
+ | Есть ещё один трюк. Можно заставить свой сервер отвечать клиенту не сразу, а с небольшой задержкой. Это поможет отсечь много спама, поскольку спамерам ждать некогда. В то же время нормальный SMTP сервер никогда не порвёт соединение, не подождав хотя бы нескольких секунд. Ждать можно на любом этапе общения, но эффективней это делать сразу после получения запроса на соединение от клиента (то есть просто немного затянуть с ответом), поскольку когда вы уже начнёте общение, то задержки вряд ли заставят клиента отключиться. | ||
+ | |||
+ | Для включения таймаута служит опция | ||
+ | |||
+ | <file> | ||
+ | sleep seconds | ||
+ | </file> | ||
+ | |||
+ | Не указывайте время ожидания больше 25 секунд. По умолчанию тот же Postfix после 30-ой секунды ожидания считает, что сервер недоступен, так что разумным ограничением на используемое время задержки можно считать 20 секунд или около того. | ||
===== Проверяем приветствие ===== | ===== Проверяем приветствие ===== | ||
Строка 150: | Строка 160: | ||
===== Грейлистинг ===== | ===== Грейлистинг ===== | ||
- | Иногда почтовые серверы бывают перегружены и не могут принять письмо. Как вы думаете, что они отвечают на входящие запросы в этом случае? Как ни странно так и отвечают - сервер <i>временно</i> недоступен, попробуйте позже. Ни один нормальный отправитель никогда в этом случае не посчитает, что письмо доставить нельзя со всеми вытекающими последствиями. Напротив, отправитель предпримет попытки доставить письмо позже, поставив его в свою очередь на отправку. Этот факт можно (и без сомнения нужно!) очень эффективно использовать: при каждой первой попытке соединения с незнакомого хоста наш сервер будет отправлять сообщение о временной ошибке, а пропускать письмо только со второго раза. Это отсеит сразу чуть ли не весь оставшийся спам, поскольку спамсерверы практически никогда не предпринимают больше одной попытки доставки письма (иначе они бы просто "упали" от переполнения очереди). Эта технология называется Greylisting, и использовать её в современных реалиях просто необходимо. | + | Иногда почтовые серверы бывают перегружены и не могут принять письмо. Как вы думаете, что они отвечают на входящие запросы в этом случае? Как ни странно так и отвечают - сервер //временно// недоступен, попробуйте позже. Ни один нормальный отправитель никогда в этом случае не посчитает, что письмо доставить нельзя со всеми вытекающими последствиями. Напротив, отправитель предпримет попытки доставить письмо позже, поставив его в свою очередь на отправку. Этот факт можно (и без сомнения нужно!) очень эффективно использовать: при каждой первой попытке соединения с незнакомого хоста наш сервер будет отправлять сообщение о временной ошибке, а пропускать письмо только со второго раза. Это отсеит сразу чуть ли не весь оставшийся спам, поскольку спамсерверы практически никогда не предпринимают больше одной попытки доставки письма (иначе они бы просто "упали" от переполнения очереди). Эта технология называется Greylisting, и использовать её в современных реалиях просто необходимо. |
- | Минусом применения является небольшая (обычно не более получаса) задержка в доставке писем <b>при первом</b> соединении от неизвестного хоста. То есть если ещё не известный нашему постфиксу сервер хочет передать письмо, то при первой попытке соединения ему отправляется ошибка о временной недоступности. Если сервер повторил попытку соединения - то письмо принимается, а сервер заносится в надёжные узлы и в дальнейшем письма от него принимаются без задержек. | + | Минусом применения является небольшая (обычно не более получаса) задержка в доставке писем **при первом** соединении от неизвестного хоста. То есть если ещё не известный нашему постфиксу сервер хочет передать письмо, то при первой попытке соединения ему отправляется ошибка о временной недоступности. Если сервер повторил попытку соединения - то письмо принимается, а сервер заносится в надёжные узлы и в дальнейшем письма от него принимаются без задержек. |
- | О настройке грейлистинга в Postfix так же предлагается прочитать в Google, это несложно и ошибиться не получится. | + | Один из самых популярных способов реализации технологии грейлистинга в Postfix - это программа **postgrey**, про которую можно почитать в соответствующей статье: |
+ | |||
+ | * [[postgrey|Грейлистинг с помощью postgrey]] | ||
===== Блоклисты, или как делать не надо ===== | ===== Блоклисты, или как делать не надо ===== | ||
- | Некоторые администраторы почты при фильтрации спама полагаются на так называемые DNSBL (RBL) - чёрные списки узлов, замеченных в рассылке спама. Так вот, **никогда** не добавляйте **никаких проверок DNSBL** на ваши почтовые сервера. Тому есть две причины: первая, и самая основная, кроется во второй части первого предложения этого раздела. В эти списки узлы заносятся совершенно беспорядочно и нет никаких гарантий, что туда не попадёт нормальный хост (на котором, может быть, в какой-то момент поселился вирус, рассылающий спам, но теперь вирус уже вылечили, или проще и гораздо реальней - один внешний IP для большой сети, в которой завёлся спамер). Вторая причина более банальна: предложенный выше механизм фильтрации гораздо эффективней любых DNSBL и при этом не полагается на непроверенные данные от третьих лиц. | + | Некоторые администраторы почты при фильтрации спама полагаются на так называемые DNSBL (RBL) - чёрные списки узлов, замеченных в рассылке спама. Так вот, **никогда** не добавляйте **никаких проверок DNSBL** на ваши почтовые сервера. Тому есть две причины: первая, и самая основная, кроется во второй части первого предложения этого раздела. В эти списки узлы заносятся совершенно беспорядочно и нет никаких гарантий, что туда не попадёт нормальный хост (на котором, может быть, в какой-то момент поселился вирус, рассылающий спам, но теперь вирус уже вылечили, или проще и гораздо реальней - один внешний IP для большой сети, в которой завёлся спамер). Вторая причина более банальна: предложенный выше механизм фильтрации гораздо эффективней любых DNSBL и при этом не полагается на непроверенные данные от третьих лиц. DNSBL, не смотря на любовь к ним многих администраторов - однозначно порочная технология, и она ни в коем случае не должна применяться в чистом виде на серверах. [[http://www.opennet.ru/opennews/art.shtml?num=27693|Для примера]]. |
===== С ног на голову, или посмотрим с другой стороны баррикад ===== | ===== С ног на голову, или посмотрим с другой стороны баррикад ===== | ||
Строка 189: | Строка 201: | ||
Вы находитесь в Wiki разделе. Поэтому можете смело исправлять статью и добавлять в неё новые данные (например, описание поддержки предложенных механизмов другими почтовыми серверами). Однако в данном конкретном случае старайтесь сохранять целостность повествования и не отклоняйтесь от основной темы - перечисления //возможностей// фильтрации спама на основании //только// SMTP заголовков. | Вы находитесь в Wiki разделе. Поэтому можете смело исправлять статью и добавлять в неё новые данные (например, описание поддержки предложенных механизмов другими почтовыми серверами). Однако в данном конкретном случае старайтесь сохранять целостность повествования и не отклоняйтесь от основной темы - перечисления //возможностей// фильтрации спама на основании //только// SMTP заголовков. | ||
+ | |||
+ | ===== Небольшие комментарии по поводу Postfix ===== | ||
+ | |||
+ | Во-первых, как уже было сказано, все приведённые опции надо указывать в одном из четырёх** *_restrictions** параметров конфигурационного файла Postfix, относящихся к заголовкам SMTP сессии. Первый из них, **smtpd_client_restrictions** отвечает за проверки на основе IP адреса клиента, оставшиеся три - **smtpd_helo_restrictions**, **smtpd_sender_restrictions** и **smtpd_recipient_restrictions** - за соответствующие SMTP заголовки. | ||
+ | |||
+ | При этом обратите внимание на то, что все четыре параметра применяются последовательно, и при этом если письмо отклоняется хотя бы в одном - то оно не принимается и отправителю посылается ошибка. Однако permit правила отменяют дальнейшие проверки только по данному конкретному параметру, и Postfix переходит к следующему. Поэтому если письмо успешно прошло проверку по **smtpd_client_restrictions**, то оно вполне может отсеяться по **smtpd_helo_restrictions**. | ||
+ | |||
+ | Кроме того, современные версии Postfix по умолчанию отклоняют письмо не раньше //RCPT TO// команды. Это сделано для того, что бы в логах всегда можно было посмотреть полную информацию о письме - от кого и кому оно должно было придти. Не стоит менять такое поведение Postfix. | ||
+ | |||
+ | Ну и наконец есть возможность протестировать любую **reject_* **опцию без реального отклонения писем. Для этого необходимо перед ней в соответствующем параметре конфигурационного файла Postfix указать опцию **warn_if_reject**. При этом в случае срабатывания запрета в логфайл будет добавлена запись с пометкой **reject_warning**, однако письмо не будет отклонено. | ||
+ | |||
+ | Подробней про возможные запрещающие опции и параметры конфигурационного файла Postfix можно почитать в официальной документации: | ||
+ | |||
+ | * [[http://www.postfix.org/postconf.5.html|Postfix Configuration Parameters (англ.)]] | ||
+ | |||
+ | <note>Если вы используете старую версию Postfix, то у вас параметры и опции могут называться немного по другому, чем приведено в этой статье. Нужные названия опций в этом случае можно найти в документации по ссылке.</note> | ||
===== Ссылки ===== | ===== Ссылки ===== | ||
+ | * [[postfix|Основная статья про почтовый сервер Postfix]] | ||
* [[http://rfc2.ru/5321.rfc|RFC 5321 — Простой протокол передачи электронной почты (SMTP)]] | * [[http://rfc2.ru/5321.rfc|RFC 5321 — Простой протокол передачи электронной почты (SMTP)]] | ||
* [[http://rfc2.ru/2505.rfc|RFC 2505 — Рекомендации по предотвращению спама для SMTP MTA]] | * [[http://rfc2.ru/2505.rfc|RFC 2505 — Рекомендации по предотвращению спама для SMTP MTA]] |