Имя почтового сервера – mail.example.com
Имя почтового домена – example.com
IP-адрес почтового сервера – 113.113.113.113
1 |
# nano /etc/postfix/main.cf |
запретить использование адресов, отличных от определенных в документе RFC-821
1 |
strict_rfc821_envelopes = yes |
запретить использование команды VRFY
1 |
disable_vrfy_command = yes |
потребовать обязательное использование команды HELO/EHLO
1 |
smtpd_helo_required = yes |
Далее следует очень важный параметр smtpd_delay_reject. Я настоятельно рекомендую не изменять его значение по умолчанию (yes).
В противном случае сеанс связи с почтовым сервером будет обрываться при срабатывании первого из ограничений, под которое попал клиент, и Вы даже не узнаете о потере возможно валидных сообщений и,
соответственно, не сможете оперативно изменить настройки для их беспрепятственной доставки.
В связи с использованием отложенной обработки ограничений можно поместить все ограничения доступа к почтовому серверу на этапах установки соединения, получения команд HELO/EHLO и MAIL FROM в раздел,
описывающий ограничения доступа на этапе получения команды RCPT TO, оставив пустыми остальные из перечисленных разделов:
1 2 3 4 5 6 |
smtpd_delay_reject = yes smtpd_client_restrictions = smtpd_helo_restrictions = smtpd_sender_restrictions = smtpd_relay_restrictions = |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
smtpd_recipient_restrictions = # разрешить доступ из доверенных сетей permit_mynetworks, # разрешить доступ клиентам, прошедшим процедуру аутентификации SMTP permit_sasl_authenticated, # запретить Postfix быть открытым релеем reject_unauth_destination, # запретить некорректное использование команд конвейерной обработки reject_unauth_pipelining, # проверить, разрешен ли доступ в файле, являющемся параметром данного ограничения check_client_access hash:/etc/postfix/maps/new/access_client, # проверить, разрешен ли доступ в файле, являющемся параметром данного ограничения check_client_access pcre:/etc/postfix/maps/new/access_client.pcre, # запретить доступ клиентам, не зарегистрированным в DNS reject_unknown_client_hostname, # проверить, разрешено ли выданное клиентом приветствие в файле, являющемся параметром данного ограничения check_helo_access hash:/etc/postfix/maps/new/access_helo, # запретить доступ, если имя хоста, содержащееся в выданном клиентом приветствии, имеет некорректный синтаксис reject_invalid_helo_hostname, # запретить доступ, если имя хоста, содержащееся в выданном клиентом приветствии, не является FQDN reject_non_fqdn_helo_hostname, # запретить доступ, если для имени хоста, содержащемся в выданном клиентом приветствии, не существует A или MX запись в DNS reject_unknown_helo_hostname, # проверить, разрешен ли адрес отправителя сообщения в файле, являющемся параметром данного ограничения check_sender_access hash:/etc/postfix/maps/new/access_sender, # запретить доступ, если адрес отправителя сообщения имеет некорректный формат reject_non_fqdn_sender, # запретить доступ, если для имени домена адреса отправителя не существует A или MX запись в DNS reject_unknown_sender_domain, # запретить доступ, если адрес отправителя не может быть проверен (механизм проверки описан в Postfix Address Verification Howto) #### reject_unverified_sender, # MX black list – фальшивые сети check_sender_mx_access cidr:/etc/postfix/maps/new/bogus_mx.cidr # проверить, разрешен ли адрес получателя сообщения в файле, являющемся параметром данного ограничений check_recipient_access hash:/etc/postfix/maps/new/access_recipients # запретить доступ, если адрес получателя сообщения имеет некорректный формат, reject_non_fqdn_recipient, # запретить доступ, если для имени домена адреса получателя не существует A или MX запись в DNS reject_unknown_recipient_domain, # запретить доступ, если адрес получателя не может быть проверен reject_unverified_recipient, # проверить адрес сети клиента по блэклисту, адрес которого является параметром данного ограничения reject_rbl_client cbl.abuseat.org, reject_rbl_client combined.njabl.org, reject_rbl_client dnsbl.njabl.org, reject_rbl_client dul.ru, reject_rbl_client dynablock.njabl.org, reject_rbl_client opm.blitzed.org, # проверить имя домена, содержащееся в адресе отправителя, по блэклисту, адрес которого является параметром данного ограничения reject_rhsbl_sender blackhole.securitysage.com, reject_rhsbl_sender rhsbl.sorbs.net, # разрешить доступ permit # Block clients that speak too early smtpd_data_restrictions = reject_unauth_pipelining, # Отказ в приеме сообщениям с пустым именем отправителя конверта, предназначенным нескольким получателям # параметр reject_multi_recipient_bounce может надежно использоваться только в smtpd_data_restrictions, когда известны все получатели. reject_multi_recipient_bounce, permit |
Файл access_client предназначен в основном для разрешения доступа с хостов, которые не зарегистрированы в DNS или попали в какой-либо блэклист . Для таких хостов необходимо задать правила вида <IP-адрес> OK и/или hostname OK. Для того, чтобы запретить доступ какому-либо клиенту, необходимо использовать REJECT вместо OK.
Например, разрешить доступ с hostname server1.domain.com и с клиента с IP-адресом 111.111.111.111. , а с клиента с адресом 112.112.112.112 доступ запретить
1 |
# nano /etc/postfix/maps/new/access_client |
1 2 3 |
server1.domain.com OK 111.111.111.111 OK 112.112.112.112 REJECT |
После изменения файла access_client необходимо выполнить команду для создания
1 |
# postmap /etc/postfix/maps/new/access_client |
Файл access_client.pcre предназначен для блокировки абонентов Dial-Up, кабельных и xDSL сетей, которые не сочли нужным зарегистрировать «нормальное» имя в DNS. Большая часть таких абонентов — СПАМеры. Если Вам все же нужно принимать сообщения от одного из таких абонентов, добавьте его имя хоста или IP-адрес в файл access_client, рассмотренный выше. Файл access_client.pcre имеет следующее содержимое (коды ошибок и сообщения, выдаваемые при блокировке клиентов, можно изменить на свое усмотрение):
1 |
# nano /etc/postfix/maps/new/access_client.pcre |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/[ax]dsl.*\..*\..*/i REJECT Your message looks like SPAM /\.dsl.*\..*\..*/i REJECT Your message looks like SPAM /cable.*\..*\..*/i REJECT Your message looks like SPAM /client.*\..*\..*/i REJECT Your message looks like SPAM /dhcp.*\..*\..*/i REJECT Your message looks like SPAM /dial.*\..*\..*/i REJECT Your message looks like SPAM /dialup.*\..*\..*/i REJECT Your message looks like SPAM /dslam.*\..*\..*/i REJECT Your message looks like SPAM /host.*\..*\..*/i REJECT Your message looks like SPAM /node.*\..*\..*/i REJECT Your message looks like SPAM /pool.*\..*\..*/i REJECT Your message looks like SPAM /ppp.*\..*\..*/i REJECT Your message looks like SPAM /user.*\..*\..*/i REJECT Your message looks like SPAM |
Файл access_helo предназначен для блокировки абонентов, выдающих в приветствии имена, связанные с localhost, или одно из FQDN нашего сервера. Большая часть таких абонентов — СПАМеры. Также в данном файле можно разрешить доступ клиентам, выдающим некорректное приветствие, от которых все же нужно получать сообщения
1 |
# nano /etc/postfix/maps/new/access_helo |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
127.0.0.1 REJECT Your server configured incorrectly localhost REJECT Your server configured incorrectly localhost.localdomain REJECT Your server configured incorrectly localhost.domain.com REJECT Your server configured incorrectly 10 REJECT Your server configured incorrectly 172.16 REJECT Your server configured incorrectly 192.168 REJECT Your server configured incorrectly # reject my hostname/domainname. mail.example.com 550 Don`t use my name example.com 550 Don`t use my name # reject my [ip]. 113.113.113.113 550 Don`t use my address # Разрешить доступ клиенту,который представляется как server.domain3.com server.domain3.com OK |
После изменения файла access_helo необходимо выполнить команду
1 |
# postmap /etc/postfix/maps/new/access_helo |
Файл access_sender предназначен в основном для разрешения доступа отправителей, адреса или имена доменов которых попали в какой-либо блэклист, или удаленный сервер запрещает проверку их существования. Также в нем можно указывать список доменов для которых необходимо проверять отправителя (если не используется опция reject_unverified_sender, которая включает проверку отправителей для всех доменов ). Для разрешения доступа нужного отправителя или всех отправителей нужного домена необходимо добавить правила вида <Почтовый адрес отправителя> OK или <Имя домена отправителя> OK, соответственно.
1 |
# nano /etc/postfix/maps/new/access_sender |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# разрешить доступ для отправителя с домена domain4.com и всех его поддоменов domain4.com OK .domain4.com OK # разрешить доступ для пустого отправителя конверта(<>) # Этот адрес принадлежит MAILER_DAEMON, почтовый сервер исполь_ # зует его при отправке возвратов и уведомлений о состоянии <> OK # запретить доступ, если домен отправителя совпадает с нашим доменом или поддоменом example.com REJECT .example.com REJECT # Выборочная проверка адресов отправителей mail.ru reject_unverified_sender yandex.ru reject_unverified_sender ya.ru reject_unverified_sender bk.ru reject_unverified_sender list.ru reject_unverified_sender inbox.ru reject_unverified_sender mail.ua reject_unverified_sender msn.com reject_unverified_sender lenta.ru reject_unverified_sender rambler.ru reject_unverified_sender gmail.com reject_unverified_sender googlemail.com reject_unverified_sender hotmail.com reject_unverified_sender web.de reject_unverified_sender i.ua reject_unverified_sender ukr.net reject_unverified_sender outlook.com reject_unverified_sender |
После изменения файла access_sender необходимо выполнить команду
1 |
# postmap /etc/postfix/maps/new/access_sender |
Запрет доступа с доменов, у которых MX-запись относится к указанным подсетям
1 |
# nano /etc/postfix/maps/new/bogus_mx.cidr |
1 2 3 4 5 6 7 8 9 |
10.0.0.0/8 REJECT Domain MX in RFC 1918 private network 127.0.0.0/8 REJECT Domain MX in loopback network 169.254.0.0/16 REJECT Domain MX in link local network 172.16.0.0/12 REJECT Domain MX in RFC 1918 private network 192.0.2.0/24 REJECT Domain MX in TEST-NET network 192.168.0/16 REJECT Domain MX in RFC 1918 private network 224.0.0.0/4 REJECT Domain MX in class D multicast network 240.0.0.0/5 REJECT Domain MX in class E reserved network 248.0.0.0/5 REJECT Domain MX in reserved network |
Файл access_recipients предназначен в основном для разрешения безусловной доставки определенным получателям. Также можно указывать пользователей, доставка на которых будет запрещена.
1 |
# nano /etc/postfix/maps/new/access_recipients |
1 2 3 4 5 6 7 8 9 |
postmaster@example.com OK abuse@example.com OK # webmaster@example.com OK # hostmaster@example.com OK myusername@example.com OK # Запретить доставку на пользователя mail mail@example.com REJECT |
После изменения файла access_recipients необходимо выполнить команду
1 |
# postmap /etc/postfix/maps/new/access_recipients |
Запрет на пересылку файлов с определенным разрешением
1 |
# nano /etc/postfix/main.cf |
1 |
mime_header_checks = regexp:/etc/postfix/maps/new/mime_header_checks |
1 |
# nano /etc/postfix/maps/new/mime_header_checks |
1 2 3 |
#Files blocked by their suffix /name=\"(.*)\.(386|acm|ax|bat|bin|bpl|cat|chm|cmd|com|cpl|dat|dll|do|dpl|drv|exe|hlp|hta|inf|ini|jse|lnk|msc|msi|nls|ocx|olb|ole)\"$/ REJECT Unwanted type of attachment $1.$2 /name=\"(.*)\.(pif|reg|rm|rom|scr|shb|shm|shs|sys|tlb|vbe|vbs|vxd|xl|xsl)\"$/ REJECT Unwanted type of attachment $1.$2 |
Аналогичным образом при необходимости можно запретить пересылку
трафикоемких файлов такие как
аудиозаписи
1 |
669, aac, aif, aiff, amf, au, far, it, itz, kar, m3u, m4a, mdz, mid, midi, miz, mmf, mod, mp1, mp2, mp3, mp4, mtm, nsa, nst, ogg, okt, pls, ptm, rmi, s3m, s3z, snd, stm, stz, ult, voc, vaw, wma, xm, xmz |
и видеоклипы
1 |
asf, avi, m2v, mov, mpeg, mpg, nsv, qt, wmv |
Источник:
https://sergeysl.ru/freebsd-postfix-mail-system/
http://www.postfix.org/SMTPD_ACCESS_README.html
Книга The book of postfix by Ralf Hildebrandt, Patrick Koetter 2008year.