Ubuntu → Postfix как почтовый шлюз для MS Exchange 2003
Как отфильтровать спам из потока электронных писем поступающих на почтовый сервер, с одной стороны-сложная задача, с другой, есть определенные признаки по которым можно определить что хост отправитель, участвует в рассылке нежелательной корреспонденции.
Схема работы:

Рассмотрим схему подробнее:
Есть Linux сервер, который открыт для приема корреспонденции из интернет, есть сервер Windows 2003/2008- версия не важна, с установленной ролью Active Directory и почтовый сервер Exchange. Exchange может жить как на одном сервере с AD( такое обычно бывает в небольших организациях) или на выделенном сервере (тут все зависит от IT-инфраструктуры)
Значит, сама выгрузка данных о получателях, т.е. список почтовых ящиков пользователей будет происходить из AD, благо, когда в системе с AD установлен Exchange, информация об e-mail адресе пользователя, добавляется автоматически в свойства учетной записи Active Directory.
Для примера мы будим использовать имя домена example.com
Предполагается, что сервер Ubuntu уже установлен и обновлен до последней актуальной версии.
редактируем основной конфигурационный файл postfix, предварительно залогинившись как супер-пользователь
Нас интересуют следующие строки (находим их и редактируем, так как указанно ниже, адрес example.com меняем на свой)
список доверенных сетей из которых разрешена неавторизированная отправка, сервер win2k3 имеет адрес 192.168.0.20, этой директивой мы разрешаем отправку почты наружу через postfix только непосредственно серверу с Exchange на борту, даже клиенты локальной сети должны отправлять почту только через Exhcange.
Эти пункты отвечают за то, куда будет передаваться принятая почта.
В конце конфига добавляем
сохраняем конфиг и выходим в консоль.
Подробно на всех пунктах останавливаться не буду, их назначение легко найти в гугле,
Все содержимое можно просто скопировать как есть.
Далее нам необходимо создать следующие файлы:
содержащий
отвечает за то, куда нужно передавать принятую почту.
где: smtp:серер получатель, IP в [ ] говорит о том, что не нужно проверять его ДНС зону, а передавать почту на этот адрес как есть, а там разберутся!
Это наш список получателей, который экспортируется из Exchange
Содержит записи вида:
где: username-имя пользователя в AD c mailbox, example.com -домен получателя, OK –директива, как поступить с письмом, в нашем случае – пропустить.
Сведения о получателях будут содержаться именно в этом файле, можно конечно сделать опрос exchange в реальном времени и у меня даже где-то был скрипт, но все руки не доходили, тут еще появляется ненужная нагрузка на контроллер домена, а оно вам надо?! Причем если одновременно долбиться несколько сот тыс. отправителей, все эти запросы посыпятся и на AD. Это и потерянное время на ожидание ответа, от винды и нагрузка на процессор уже 2х серверов. По моему глубокому мнению, проще запустить скрипт в заданное время, выгрузинт список получателей, и перебросит их в файл, как часто его запускать-решать вам, у меня он запускается 2 раза в день 12 и 15 часов — чаще не требуется.
Едем дальше:
В этом файле используются регулярные выражения, для фильтрации команды helo
Если отправитель представился IP адресом-то это нарушение и почту от него, не принимают, тоже самое со вторым пунктом localhost –нормальный сервер не может представляться так, либо там админ криворукий (пускай настраивает нормально) либо на другом конце просто сильно запаршивевший компьютер, который является частью ботнета, рассылающего спам. Ну и последнее если отправитель представляется — example.com, ну не может на другом конце быть наш сервер, это на 100% спам- можно смело заворачивать письмо. Команда REJECT указывает на то, что сделать при выполнении условий.
Да к стати, после идет ответ сервера, с указанием причины отказа в принятии почты, туда можно вписать что-то обидное ;) и это сообщение увидят на том конце. Но это дело воспитания конкретного индивидуума.
содержание данного файла схоже с предыдущим, но тут уже используются явные указатели, этим файлом можно, например, блокировать отдельные ящики пользователей.
Проверка на принадлежность к различным сетям.
Содержит регулярные выражения различных сетей и как следствие, признаков что это не почтовые сервера, а зараженные клиентские компьютеры, а если там действительно работают нормальные сервера, то почту можно отправлять и через релей провайдера или на худой конец обратиться в тех поддержку чтобы прописали обратную DNS зону.
В результате у нас должно получиться 5 файлов,
их необходимо переконвертировать в фалы базы данных используемые posfix.
если все проходит без ошибок, двигаемся дальше.
Это что касается ubuntu…
По моему, глубокому мнению, не имеет смысла пускать сервер с передовой, в тыл нашей обороны, по этой же причине мы не будем давать лазить в системе и опрашивать ее, а разрешим ей видеть только то, что ей необходимо для работы, не более.
Как это можно реализовать на практике?! Postfix будет видеть только тот список получателей который мы ему сами дадим -уже готовый!
На сервере Windows, через планировщик заданий, мы будем запускать скрипт который будет экспортировать список пользователей в файл recipients.
Схема работы системы Win:
В AD заводится пользователь с минимальными правами (без почтового ящика), с правом доступа, лишь в одну папку. Назовем его, для примера, postfix с паролем 1234567.
Через планировщик заданий создается новое задание с частотой выполнения нужной вам.
На просторах сети был найден скрипт, который не полностью соответствовал нашим задачам, я его слегка допилил и теперь он делает на 100% то, что нужно.
Сам скрипт написан на VBS, назовем его mail.vbs — такого содержания:
( прошу просмотреть его очень внимательно, конкретно “objOutputFileName.Writeline( objADobject.Mail & “ там есть комментарии)
Чтобы создать задание в планировщике, в строку инициализации нашего скрипта пишем:
ВСЕ это одной строкой!
Ну и выставляем время, когда он будет выполнятся и как часто.
Далее создаем директорию и открываем в нее доступ по сети пользователю postfix.
Я предпочел монтировать расшаренную директорию при старте системы, по этому, запихал команду монтирования в файл /etc/rc.local.
Также необходимо создать в директории media директорию win. Почему именно win- чтобы, через несколько месяцев, можно было понять, что это такое и откуда оно взялось.
Сначала ставим пакет smbfs -без него наша директория не примонтируется.
Редактируем файл rc.local
И перед строкой exit0 вписываем команду монтирования шары:
где: 192.168.0.20-ip сервера с exchange.
antispam-директория в которой лежит файл recipients.
/media/win/-куда должна примонтироваться виндовая шара.
iocharset=utf8-кодировака, если случайно в ней появятся папки с русскими названиями, то они будут читаемы, а не ???????????, да и хуже от этого не будет, в общем делаем сразу как надо и спим спокойно.
Перезагружаем Ubuntu лезем в /media/win/ видим ее содержимое виндовой шары- значит все отлично.
Далее создадим небольшой скрипт который будет переписывать файл recipients
в директорию /etc/postfix, а затем будет экспортировать его в базу данных postfix и перезагружать почтовик.
Создаем задание в CRON которое будет выполняться через 3 мин после выполнения задания на Win2k3-на всякий случай. (например 12:03 и в 15:03)
Вот и все!
Единственный ящик в который спам, все таки доходит, это ящик на который приходят заявки для нашей конторы, но их число не превышает 3-4 шт.
Безопасность — в случае компрометации сервера Linux шлюз легко восстанавливается, Да и злоумышленник не получит доступа к корреспонденции, т.к ее на нем просто нет, она сразу передается Exchange-если проходит все проверки.
Кроссплатформенность-нет смысла собирать модули с поддержкой всяких экзотических функций.
Время на развертывание-1 час с условием того, что Интернет шустрый, да и если все скопировать как есть. Система протестирована в течении года-работает без сбоев.
А что еще можно прикрутить к нему- решать вам. Там можно сделать и грейлистинг и установить spamassassin в общем нет предела фантазии, но нужно соблюдать меру.
Ну и на последок, судя по комментариям настройка вызвала сложности, по этому выкладываю копию конфигов с боевого сервера, все домены в нем заменены на example.org от вас требуется- заменить только IP адреса собственно архив
Есть что добавить?! Прошу в комментарии…
Схема работы:

Рассмотрим схему подробнее:
Есть Linux сервер, который открыт для приема корреспонденции из интернет, есть сервер Windows 2003/2008- версия не важна, с установленной ролью Active Directory и почтовый сервер Exchange. Exchange может жить как на одном сервере с AD( такое обычно бывает в небольших организациях) или на выделенном сервере (тут все зависит от IT-инфраструктуры)
Значит, сама выгрузка данных о получателях, т.е. список почтовых ящиков пользователей будет происходить из AD, благо, когда в системе с AD установлен Exchange, информация об e-mail адресе пользователя, добавляется автоматически в свойства учетной записи Active Directory.
Для примера мы будим использовать имя домена example.com
Предполагается, что сервер Ubuntu уже установлен и обновлен до последней актуальной версии.
Часть первая, подготовка Postfix
Для начала, устанавливаем необходимые пакетыsudo apt-get install postfix
редактируем основной конфигурационный файл postfix, предварительно залогинившись как супер-пользователь
sudo su
nano /etc/postfix/main.cf
Нас интересуют следующие строки (находим их и редактируем, так как указанно ниже, адрес example.com меняем на свой)
myhostname = mail.example.com # полное имя хоста
mydomain = example.com # имя домена, от имени которого приходит почта
mydestination = mail.example.com, localhost, example.com
mynetworks = 127.0.0.0/8, 192.168.0.20 [::ffff:127.0.0.0]/104 [::1]/128
список доверенных сетей из которых разрешена неавторизированная отправка, сервер win2k3 имеет адрес 192.168.0.20, этой директивой мы разрешаем отправку почты наружу через postfix только непосредственно серверу с Exchange на борту, даже клиенты локальной сети должны отправлять почту только через Exhcange.
virtual_mailbox_domains = example.com
transport_maps = hash:/etc/postfix/transport
virtual_transport = hash:/etc/postfix/transport
Эти пункты отвечают за то, куда будет передаваться принятая почта.
В конце конфига добавляем
bounce_queue_lifetime = 1d
maximal_queue_lifetime = 1d
minimal_backoff_time = 180s
maximal_backoff_time = 12h
strict_rfc821_envelopes = yes
disable_vrfy_command = yes
smtpd_delay_reject = yes
smtpd_helo_required = yes
anvil_rate_time_unit = 60s
smtp_always_send_ehlo = yes
smtpd_hard_error_limit = 1
smtpd_recipient_limit = 1
smtpd_sasl_security_options = noanonymous
anvil_rate_time_unit = 60s
smtpd_client_connection_count_limit = 5
smtpd_client_connection_rate_limit = 6
smtpd_client_message_rate_limit = 6
smtpd_client_recipient_rate_limit = 1
smtpd_client_restrictions =
reject_unauth_pipelining,
permit_sasl_authenticated,
permit_mynetworks,
check_helo_access regexp:/etc/postfix/helo,
reject_unknown_client_hostname,
check_client_access regexp:/etc/postfix/dul_checks,
permit
smtpd_helo_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unknown_client,
# проверяем IP на присутствие в спам-листах
reject_rbl_client cbl.abuseat.org,
reject_rbl_client sbl-xbl.spamhaus.org,
reject_rbl_client sbl.spamhaus.org,
reject_rbl_client dnsbl.njabl.org,
check_helo_access regexp:/etc/postfix/helo,
reject_invalid_helo_hostname,
reject_non_fqdn_helo_hostname,
reject_unknown_helo_hostname,
check_sender_access hash:/etc/postfix/access,
check_recipient_access hash:/etc/postfix/recipients,
permit
smtpd_sender_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_non_fqdn_sender,
reject_unknown_sender_domain,
permit
smtpd_recipient_restrictions =
reject_unauth_pipelining,
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
reject_invalid_hostname,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
permit
сохраняем конфиг и выходим в консоль.
Подробно на всех пунктах останавливаться не буду, их назначение легко найти в гугле,
Все содержимое можно просто скопировать как есть.
Далее нам необходимо создать следующие файлы:
nano /etc/postfix/transport
содержащий
example.com smtp:[192.168.0.20]
отвечает за то, куда нужно передавать принятую почту.
где: smtp:серер получатель, IP в [ ] говорит о том, что не нужно проверять его ДНС зону, а передавать почту на этот адрес как есть, а там разберутся!
nano /etc/postfix/recipients
Это наш список получателей, который экспортируется из Exchange
Содержит записи вида:
username@example.com OK
где: username-имя пользователя в AD c mailbox, example.com -домен получателя, OK –директива, как поступить с письмом, в нашем случае – пропустить.
Сведения о получателях будут содержаться именно в этом файле, можно конечно сделать опрос exchange в реальном времени и у меня даже где-то был скрипт, но все руки не доходили, тут еще появляется ненужная нагрузка на контроллер домена, а оно вам надо?! Причем если одновременно долбиться несколько сот тыс. отправителей, все эти запросы посыпятся и на AD. Это и потерянное время на ожидание ответа, от винды и нагрузка на процессор уже 2х серверов. По моему глубокому мнению, проще запустить скрипт в заданное время, выгрузинт список получателей, и перебросит их в файл, как часто его запускать-решать вам, у меня он запускается 2 раза в день 12 и 15 часов — чаще не требуется.
Едем дальше:
nano /etc/postfix/helo
/([0-9]{1,3}(\.|-)){3}[0-9]{1,3}/i REJECT IP-able helo SPAM!
/localhost/i REJECT you are SPAM!
/example.com/i REJECT you are not in my local networks-SPAM!
В этом файле используются регулярные выражения, для фильтрации команды helo
Если отправитель представился IP адресом-то это нарушение и почту от него, не принимают, тоже самое со вторым пунктом localhost –нормальный сервер не может представляться так, либо там админ криворукий (пускай настраивает нормально) либо на другом конце просто сильно запаршивевший компьютер, который является частью ботнета, рассылающего спам. Ну и последнее если отправитель представляется — example.com, ну не может на другом конце быть наш сервер, это на 100% спам- можно смело заворачивать письмо. Команда REJECT указывает на то, что сделать при выполнении условий.
Да к стати, после идет ответ сервера, с указанием причины отказа в принятии почты, туда можно вписать что-то обидное ;) и это сообщение увидят на том конце. Но это дело воспитания конкретного индивидуума.
nano /etc/postfix/access
содержание данного файла схоже с предыдущим, но тут уже используются явные указатели, этим файлом можно, например, блокировать отдельные ящики пользователей.
bad_user@example.com REJECT user is note available
example.com REJECT you are not in my local networks
Внешний IP нашего сервера REJECT you are not in my local networks
localhost REJECT you are SPAM!
nano /etc/postfix/dul_checks
Проверка на принадлежность к различным сетям.
Содержит регулярные выражения различных сетей и как следствие, признаков что это не почтовые сервера, а зараженные клиентские компьютеры, а если там действительно работают нормальные сервера, то почту можно отправлять и через релей провайдера или на худой конец обратиться в тех поддержку чтобы прописали обратную DNS зону.
/([0-9]*-){3}[0-9]*(\..*){2,}/i REJECT 553 SPAM_ip-add-rr-ess_networks
/([0-9]*\.){4}(.*\.){3,}.*/i REJECT 553 SPAM_ip-add-rr-ess_networks
/.*\.broadband\.hu/i REJECT 553 SPAM_broadband-hu
/client.*\..*\..*/i REJECT 553 SPAM_CLIENT
/cable.*\..*\..*/i REJECT 553 SPAM_CABLE
/pool.*\..*\..*/i REJECT 553 SPAM_POOL
/dial.*\..*\..*/i REJECT 553 SPAM_DIAL
/ppp.*\..*\..*/i REJECT 553 SPAM_PPP
/dslam.*\..*\..*/i REJECT 553 SPAM_DSLAM
/dhcp.*\..*\..*/i REJECT 553 SPAM_DHCP
/[\.-]dsl.*\..*\..*/i REJECT 553 SPAM_DSL
/[ax]dsl.*\..*\..*/i REJECT 553 SPAM_XDSL
/.*([0-9]*\.){4}cableonline\.com\.mx/i REJECT 553 SPAM_IP-cableonline-com-mx
/.*\.([0-9]*\.){4}ip\.holtonks\.net/i REJECT 553 SPAM_ip-holtonks-net
/([0-9]*-){3}[0-9]*\.fibertel\.com\.ar/i REJECT 553 SPAM_IP-fibertel-com-ar
/.*[0-9]*-[0-9]*\.fibertel\.com\.ar/i REJECT 553 SPAM_IP-fibertel-com-ar
/[0-9]*\.user\.veloxzone\.com\.br/i REJECT 553 SPAM_user-veloxzone-com-br
/[0-9]*\.customer\.alfanett\.no/i REJECT 553 SPAM_customer-alfanett-no
/.*([0-9]*-){3}[0-9]*\.telecom\.net\.ar/i REJECT 553 SPAM_host-telecom-net-ar
/.*(-[0-9]*){2}\.telpol\.net\.pl/i REJECT 553 SPAM_host-telpol-net-pl
/(.*\.){2}maxonline\.com\.sg/i REJECT 553 SPAM_host-maxonline-com-sg
/(.*-){2}.*\.fairgamemail\.us/i REJECT 553 SPAM_host-fairgamemail-us
/[0-9]*[0-9]*-\.wispnet\.net/i REJECT 553 SPAM_host-wispnet-net
/.*-.*(\..*){2}\.ne\.jp/i REJECT 553 SPAM_host-ne-jp
/[0-9]*\..*\.ne\.jp/i REJECT 553 SPAM_h09t-ne-jp
/(.*\.){3}ad\.jp/i REJECT 553 SPAM_host-ad-jp
/(.*\.){4}revip\.asianet\.co\.th/i REJECT 553 SPAM_revip-asianet-co-th
/[0-9]*\..*\.virtua\.com\.br/i REJECT 553 SPAM_host-virtua-com-br
/([0-9]*-){3}[0-9]*\.exatt\.net/i REJECT 553 SPAM_host-exatt-net
/([0-9]*\.){4}ip\.alltel\.net/i REJECT 553 SPAM_host-ip-alltel-net
/[0-9]{6,}\.chello\.../i REJECT 553 SPAM_host-chello
/.*[0-9]*\..*\.chello\.../i REJECT 553 SPAM_host-chello-xx
/.*\..*\.t-dialin\.net/i REJECT 553 SPAM_t-dialin-net
/.*\..*\.t-ipconnect\.de/i REJECT 553 SPAM_t-ipconnect-de
/([0-9]*-){2,3}[0-9]*\..*\.cgocable\.net/i REJECT 553 SPAM_host-cgocable-net
/.*\..*\.shawcable\.net/i REJECT 553 SPAM_host-shawcable-net
/p[0-9]*\.mp[0-9]*\.aaanet\.ru/i REJECT 553 SPAM_aaa_modem_pool
/([0-9]*-){2}[0-9]*\.ip\.adsl\.hu/i REJECT 553 SPAM_ip-adsl-hu
/([0-9]{1,3}\.){2}broadband4\.iol\.cz/i REJECT 553 SPAM_broadband-iol-cz
В результате у нас должно получиться 5 файлов,
их необходимо переконвертировать в фалы базы данных используемые posfix.
postmap /etc/postfix/transport
postmap /etc/postfix/recipients
postmap /etc/postfix/helo
postmap /etc/postfix/access
postmap /etc/postfix/dul_checks
если все проходит без ошибок, двигаемся дальше.
Это что касается ubuntu…
Чась вторая: Настройка Win2k3
По моему, глубокому мнению, не имеет смысла пускать сервер с передовой, в тыл нашей обороны, по этой же причине мы не будем давать лазить в системе и опрашивать ее, а разрешим ей видеть только то, что ей необходимо для работы, не более.
Как это можно реализовать на практике?! Postfix будет видеть только тот список получателей который мы ему сами дадим -уже готовый!
На сервере Windows, через планировщик заданий, мы будем запускать скрипт который будет экспортировать список пользователей в файл recipients.
Схема работы системы Win:
В AD заводится пользователь с минимальными правами (без почтового ящика), с правом доступа, лишь в одну папку. Назовем его, для примера, postfix с паролем 1234567.
Через планировщик заданий создается новое задание с частотой выполнения нужной вам.
На просторах сети был найден скрипт, который не полностью соответствовал нашим задачам, я его слегка допилил и теперь он делает на 100% то, что нужно.
Сам скрипт написан на VBS, назовем его mail.vbs — такого содержания:
( прошу просмотреть его очень внимательно, конкретно “objOutputFileName.Writeline( objADobject.Mail & “ там есть комментарии)
Option Explicit
Dim StartTime,EndTime: StartTime = Now ' For seeing how long the script takes to run
Dim objShell
Dim objFSO
Const ScriptVersion = "1.01"
Set objShell = WScript.CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Wscript.Echo "StartTime = " & StartTime
' ***************************************************************** '
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim objRootDSE
Dim objDomain
Dim objContainer
Dim objOrganizationalUnit
Dim strOutputFileName, objOutputFileName, GarbageRC
Dim intUserObjectCountAll, intUserObjectCountSelected
strOutputFileName = "c:\путь\ к расшаренной папке\ для пользователя postfix\recipients"
Set objOutputFileName = objFSO.OpenTextFile(strOutputFileName, ForWriting, True)
intUserObjectCountAll = 0
intUserObjectCountSelected = 0
Set objRootDSE = GetObject("LDAP://RootDSE")
Set objDomain = GetObject("LDAP://" & objRootDSE.Get("DefaultNamingContext"))
Call Sub_EnumOUs(objDomain.ADsPath)
Sub Sub_EnumOUs(sADsPath)
Set objContainer = GetObject(sADsPath)
objContainer.Filter = Array("OrganizationalUnit")
For Each objOrganizationalUnit in objContainer
WScript.Echo "Checking OU: " & objOrganizationalUnit.ADsPath
Wscript.Echo " User Object Count: " & intUserObjectCountAll
Sub_EnumUsers(objOrganizationalUnit.ADsPath)
Sub_EnumOUs(objOrganizationalUnit.ADsPath)
Next
End Sub
Sub Sub_EnumUsers(sADsPath)
Dim objADobject
Set objContainer = GetObject(sADsPath)
objContainer.Filter = Array("User")
For Each objADobject in objContainer
If objADobject.Class = "user" Then
intUserObjectCountAll = intUserObjectCountAll + 1
If objADobject.Mail <> "" Then
objOutputFileName.Writeline( objADobject.Mail & " OK" ) ' *** "[TAB]OK"- разделение с помощью табуляции **** '
intUserObjectCountSelected = intUserObjectCountSelected + 1
End If
End If
Next
End Sub
objOutputFileName.Close
' ***************************************************************** '
Чтобы создать задание в планировщике, в строку инициализации нашего скрипта пишем:
c:\windows\system32\cscript.exe c:\путь к папке со скриптом\mail.vbs
ВСЕ это одной строкой!
Ну и выставляем время, когда он будет выполнятся и как часто.
Далее создаем директорию и открываем в нее доступ по сети пользователю postfix.
Часть третья –заключительная.
Теперь задача, чтобы наш linux сервер мог увидеть содержимое сетевой папки с файлом recipients.Я предпочел монтировать расшаренную директорию при старте системы, по этому, запихал команду монтирования в файл /etc/rc.local.
Также необходимо создать в директории media директорию win. Почему именно win- чтобы, через несколько месяцев, можно было понять, что это такое и откуда оно взялось.
Сначала ставим пакет smbfs -без него наша директория не примонтируется.
sudo apt-get install smbfs
Редактируем файл rc.local
nano /etc/rc.local
И перед строкой exit0 вписываем команду монтирования шары:
mount -t smbfs //192.168.0.20/antispam /media/win/ -o iocharset=utf8,user=postfix,pass=1234567
где: 192.168.0.20-ip сервера с exchange.
antispam-директория в которой лежит файл recipients.
/media/win/-куда должна примонтироваться виндовая шара.
iocharset=utf8-кодировака, если случайно в ней появятся папки с русскими названиями, то они будут читаемы, а не ???????????, да и хуже от этого не будет, в общем делаем сразу как надо и спим спокойно.
user=postfix,pass=1234567
–имя пользователя и пароль для доступа к шаре.Перезагружаем Ubuntu лезем в /media/win/ видим ее содержимое виндовой шары- значит все отлично.
Далее создадим небольшой скрипт который будет переписывать файл recipients
в директорию /etc/postfix, а затем будет экспортировать его в базу данных postfix и перезагружать почтовик.
#!/bin/bash
cp /media/win/recipients /etc/postfix/
postmap /etc/postfix/recipients
/etc/init.d/postfix restart
Создаем задание в CRON которое будет выполняться через 3 мин после выполнения задания на Win2k3-на всякий случай. (например 12:03 и в 15:03)
Вот и все!
Что мы получили
Аниспам фильтр, с высокой степенью эффективности-до его установки я каждое утро разгребал по 240-260 писем сейчас наблюдаю, только нужную почту.Единственный ящик в который спам, все таки доходит, это ящик на который приходят заявки для нашей конторы, но их число не превышает 3-4 шт.
Безопасность — в случае компрометации сервера Linux шлюз легко восстанавливается, Да и злоумышленник не получит доступа к корреспонденции, т.к ее на нем просто нет, она сразу передается Exchange-если проходит все проверки.
Кроссплатформенность-нет смысла собирать модули с поддержкой всяких экзотических функций.
Время на развертывание-1 час с условием того, что Интернет шустрый, да и если все скопировать как есть. Система протестирована в течении года-работает без сбоев.
А что еще можно прикрутить к нему- решать вам. Там можно сделать и грейлистинг и установить spamassassin в общем нет предела фантазии, но нужно соблюдать меру.
Ну и на последок, судя по комментариям настройка вызвала сложности, по этому выкладываю копию конфигов с боевого сервера, все домены в нем заменены на example.org от вас требуется- заменить только IP адреса собственно архив
Есть что добавить?! Прошу в комментарии…
96 комментариев
Если есть желание подключаться по доменному имени, то в DNS необходимо добавить IP вашего контроллера домена, для коректного разрешения имен.
Таким макаром…
Провеить достпность самого exchange сервера, он работает? внутри эксченджа письма ходят?
Настраивать ручками-тем более что все расписано от и до. Все эти админ-панели от лукавого.
Вот такое содержание транспорта должно быть: example.com [10.0.1.15]. Такое стоит толку нет!!!
warning: connect to transport private/[10.0.1.15]: No such file or directory
Выслал письмо с адреса pochta_moya@mail.ru на адрес S.Shabanov@example.com лог очистил предварительно…
main.cf
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate «delayed mail» warnings
#delay_warning_time = 4h
readme_directory = no
# TLS parameters
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
myhostname = example.com # Имя моего домена
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = example.com, antigate.example.com, localhost.example.com, localhost
#antigate — имя моего шлюза данной машины
mynetworks = 127.0.0.0/8, 10.0.1.15 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
virtual_mailbox_domains = example.com # Имя моего домена
transport_maps = hash:/etc/postfix/transport
virtual_transport = hash:/etc/postfix/transport
#----------------------------------------------------------------------------
bounce_queue_lifetime = 1d
maximal_queue_lifetime = 1d
minimal_backoff_time = 180s
maximal_backoff_time = 12h
strict_rfc821_envelopes = yes
disable_vrfy_command = yes
smtpd_helo_required = yes
anvil_rate_time_unit = 60s
smtp_always_send_ehlo = yes
smtpd_hard_error_limit = 1
smtpd_recipient_limit = 1
smtpd_sasl_security_options =
anvil_rate_time_unit = 60s
smtpd_client_connection_count_limit = 5
smtpd_client_connection_rate_limit = 6
smtpd_client_message_rate_limit = 6
smtpd_client_recipient_rate_limit = 1
smtpd_client_restrictions =
reject_unauth_pipelining,
permit_sasl_authenticated,
permit_mynetworks,
check_helo_access regexp:/etc/postfix/helo,
reject_unknown_client_hostname,
check_client_access regexp:/etc/postfix/dul_checks,
permit
smtpd_helo_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unknown_client,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client sbl-xbl.spamhaus.org,
reject_rbl_client sbl.spamhaus.org,
reject_rbl_client dnsbl.njabl.org,
check_helo_access regexp:/etc/postfix/helo,
reject_invalid_helo_hostname,
reject_non_fqdn_helo_hostname,
reject_unknown_helo_hostname,
check_sender_access hash:/etc/postfix/access,
check_recipient_access hash:/etc/postfix/recipients,
permit
smtpd_sender_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_non_fqdn_sender,
reject_unknown_sender_domain,
permit
mail.log
Jul 28 23:51:16 antigate postfix/smtpd[25312]: connect from f268.mail.ru[217.69.128.189]
Jul 28 23:51:16 antigate postfix/trivial-rewrite[25316]: warning: do not list domain nabrk.kz in BOTH mydestination and virtual_mailbox_domains
Jul 28 23:51:17 antigate postfix/smtpd[25312]: E4F311C08CA: client=f268.mail.ru[217.69.128.189]
Jul 28 23:51:18 antigate postfix/cleanup[25317]: E4F311C08CA: message-id=<E1QmUjQ-0004Kf-00.camics-mail-ru@f268.mail.ru>
Jul 28 23:51:18 antigate postfix/qmgr[25310]: E4F311C08CA: from=<moya_pochta@mail.ru>, size=1657, nrcpt=1 (queue active)
Jul 28 23:51:18 antigate postfix/trivial-rewrite[25316]: warning: do not list domain example.com in BOTH mydestination and virtual_mailbox_domains
Jul 28 23:51:18 antigate postfix/local[25318]: E4F311C08CA: to=<S.Shabanov@example.com>, relay=local, delay=1.4, delays=1.3/0.01/0/0.14, dsn=5.1.1,
status=bounced (unknown user: «s.shabanov»)
Jul 28 23:51:18 antigate postfix/cleanup[25317]: 562CE1C08DC: message-id=<20110728175118.562CE1C08DC@example.com>
Jul 28 23:51:18 antigate postfix/bounce[25319]: E4F311C08CA: sender non-delivery notification: 562CE1C08DC
Jul 28 23:51:18 antigate postfix/qmgr[25310]: 562CE1C08DC: from=<>, size=3353, nrcpt=1 (queue active)
Jul 28 23:51:18 antigate postfix/qmgr[25310]: E4F311C08CA: removed
Jul 28 23:51:18 antigate postfix/smtpd[25312]: disconnect from f268.mail.ru[217.69.128.189]
Jul 28 23:51:19 antigate postfix/smtp[25320]: 562CE1C08DC: to=<moya_pochta@mail.ru>, relay=mxs.mail.ru[94.100.176.20]:25, delay=1.4, delays=0.12/0.01/0.53/0.74,dsn=2.0.0, status=sent (250 OK id=1QmUjU-00027C-00)
Jul 28 23:51:19 antigate postfix/qmgr[25310]: 562CE1C08DC: removed
После чего на почту отправителя почему то в спам падает сообщение с таким названием: Undelivered Mail Returned to Sender
И содержанием:
This is the mail system at host examle.com.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to postmaster.
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
<S.Shabanov@examle.com>: unknown user: «s.shabanov»
Reporting-MTA: dns; examle.com
X-Postfix-Queue-ID: E4F311C08CA
X-Postfix-Sender: rfc822; moya_pocta@mail.ru
Arrival-Date: Thu, 28 Jul 2011 23:51:16 +0600 (ALMT)
Final-Recipient: rfc822; S.Shabanov@examle.com
Original-Recipient: rfc822;S.Shabanov@examle.com
Action: failed
Status: 5.1.1
Diagnostic-Code: X-Postfix; unknown user: «s.shabanov»
Как быть что ни так?!!!
Из того что я увидел проблема, исключительно в разрешении имен через ДНС. Прикрутите свой собственный домен и настройте MX запись на IP адрес вашего почтового сервера. И все будет ходить нормально
Просто по данному мануалу у меня работает 2 системы, она уже почти 2 года другая чуть меньше года. Так что мануал рабочий на 100%!
Задается в этой строке:
objOutputFileName.Writeline( objADobject.Mail & "(тут нажать TAB)OK" ) '
4B3F01C08ED: to=<s.shabanov@example.com>, relay=local, delay=4.8, delays=4.7/0/0/0.06, dsn=5.1.1, status=bounced (unknown user: «s.shabanov»)
теперь пишет в логе:
Aug 5 23:59:04 antigate postfix/smtpd[17279]: connect from f267.mail.ru[217.69.128.188]
Aug 5 23:59:05 antigate postfix/trivial-rewrite[17239]: warning: do not list domain example.com in BOTH mydestination and virtual_mailbox_domains
Aug 5 23:59:06 antigate postfix/smtpd[17279]: 848EB1C0080: client=f267.mail.ru[217.69.128.188]
Aug 5 23:59:06 antigate postfix/cleanup[17294]: 848EB1C0080: message-id=<E1QpOdn-0003nu-00.camics-mail-ru@f267.mail.ru>
Aug 5 23:59:06 antigate postfix/qmgr[14933]: 848EB1C0080: from=<camics@mail.ru>, size=2201, nrcpt=1 (queue active)
Aug 5 23:59:06 antigate postfix/trivial-rewrite[17239]: warning: do not list domain example.com in BOTH mydestination and virtual_mailbox_dom
Aug 5 23:59:06 antigate postfix/smtp[17295]: warning: host 10.0.1.15[10.0.1.15]:25 greeted me with my own hostname example.com
Aug 5 23:59:06 antigate postfix/smtp[17295]: warning: host 10.0.1.15[10.0.1.15]:25 replied to HELO/EHLO with my own hostname example.com
Aug 5 23:59:06 antigate postfix/smtpd[17279]: disconnect from f267.mail.ru[217.69.128.188]
Aug 5 23:59:06 antigate postfix/smtp[17295]: 848EB1C0080: to=<s.shabanov@example.com>, relay=10.0.1.15[10.0.1.15]:25, delay=1.3, delays=1.2/0.01/0.01/0, dsn=5.4.6, statu$
Aug 5 23:59:06 antigate postfix/cleanup[17294]: DFE161C08C5: message-id=<20110805175906.DFE161C08C5@example.com>
Aug 5 23:59:07 antigate postfix/bounce[17296]: 848EB1C0080: sender non-delivery notification: DFE161C08C5
Aug 5 23:59:07 antigate postfix/qmgr[14933]: DFE161C08C5: from=<>, size=3927, nrcpt=1 (queue active)
Aug 5 23:59:07 antigate postfix/qmgr[14933]: 848EB1C0080: removed
На почту приходит ответ:
This is the mail system at host example.com.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to postmaster.
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
<s.shabanov@example.com>: mail for [10.0.1.15] loops back to myself
Reporting-MTA: dns; example.com
X-Postfix-Queue-ID: 848EB1C0080
X-Postfix-Sender: rfc822; camics@mail.ru
Arrival-Date: Fri, 5 Aug 2011 23:59:05 +0600 (ALMT)
Final-Recipient: rfc822; s.shabanov@example.com
Original-Recipient: rfc822;s.shabanov@example.com
Action: failed
Status: 5.4.6
Diagnostic-Code: X-Postfix; mail for [10.0.1.15] loops back to myself
Вчера вечером залез в конфиги работающего сервера, все работает именно так как описано, были мысли что я что-то упустил, но нет все также.
NOQUEUE: reject: RCPT from f211.mail.ru[217.69.138.211]: 554 5.7.1 <S.Shabanov@example.com>: Relay access denied; from=<camics@mail.ru> to=<S.Shabanov@example.com> proto=ESMTP helo=<f211.mail.ru>
И в ответ письмо такого содержания:
This message was created automatically by mail delivery software.
A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:
S.Shabanov@example.com
SMTP error from remote mailer after RCPT TO:<S.Shabanov@example.com>:
host example.com [92.46.109.130]: 554 5.7.1 <S.Shabanov@example.com>:
Relay access denied
— This is a copy of the message, including all the headers. — Return-path: <camics@mail.ru>
Received: from mail by f211.mail.ru with local
id 1Qq7v0-0005lz-00
for S.Shabanov@nabrk.kz; Sun, 07 Aug 2011 22:17:46 +0400
Received: from [91.185.30.195] by e.mail.ru with HTTP;
Sun, 07 Aug 2011 22:17:46 +0400
From: =?UTF-8?B?0JXQstCz0LXQvdC40Lkg0KjQsNCx0LDQvdC+0LI=?= <camics@mail.ru>
To: =?UTF-8?B?Uy5TaGFiYW5vdg==?= <S.Shabanov@nabrk.kz>
Subject: =?UTF-8?B?c3Nzc3Nzc3Nzc3NhYWFhYWFhYWFhYWFhYWE=?=
Mime-Version: 1.0
X-Mailer: mPOP Web-Mail 2.19
X-Originating-IP: [91.185.30.195]
Date: Sun, 07 Aug 2011 22:17:46 +0400
Reply-To: =?UTF-8?B?0JXQstCz0LXQvdC40Lkg0KjQsNCx0LDQvdC+0LI=?= <camics@mail.ru>
Content-Type: multipart/alternative;
boundary="--ALT--1YZaJFeo1312741066"
Message-Id: <E1Qq7v0-0005lz-00.camics-mail-ru@f211.mail.ru>
X-Spam: Not detected
X-Mras: Ok
----ALT--1YZaJFeo1312741066
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: base64
YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEKCgotLQrQktGB0LUg0LLQvtC30LzQvtC2
0L3QvtGB0YLQuCBATWFpbC5SdSDQsiDRgtCy0L7QtdC8INC80L7QsdC40LvRjNC90L7QvC4K0J/R
gNC+0YHRgtC+INC30LDQudC00Lgg0YEg0YLQtdC70LXRhNC+0L3QsCDQvdCwIG0ubWFpbC5ydQ==
----ALT--1YZaJFeo1312741066
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: base64
CjxIVE1MPjxCT0RZPmFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhPGJyPjxicj48YnI+
LS08YnI+0JLRgdC1INCy0L7Qt9C80L7QttC90L7RgdGC0LggQE1haWwuUnUg0LIg0YLQstC+0LXQ
vCDQvNC+0LHQuNC70YzQvdC+0LwuPGJyPtCf0YDQvtGB0YLQviDQt9Cw0LnQtNC4INGBINGC0LXQ
u9C10YTQvtC90LAg0L3QsCBtLm1haWwucnU8L0JPRFk+PC9IVE1MPgo=
----ALT--1YZaJFeo1312741066--
Aug 24 17:49:12 antz-gate postfix/smtpd[4658]: AD4641010B7: client=mail-bw0-f44.google.com[209.85.214.44]
Aug 24 17:49:12 antz-gate postfix/cleanup[4665]: AD4641010B7: message-id=<19718483.20110824174926@gmail.com>
Aug 24 17:49:12 antz-gate postfix/qmgr[4657]: AD4641010B7: from=<6689363@gmail.com>, size=1601, nrcpt=1 (queue active)
Aug 24 17:49:13 antz-gate postfix/local[4666]: AD4641010B7: to=<test@antz.ru>, relay=local, delay=0.69, delays=0.59/0/0/0.09, dsn=5.1.1, status=bounced (unknown user: «test»)
Aug 24 17:49:13 antz-gate postfix/cleanup[4665]: 146DA1013B1: message-id=<20110824134913.146DA1013B1@web.antz.ru>
Aug 24 17:49:13 antz-gate postfix/bounce[4667]: AD4641010B7: sender non-delivery notification: 146DA1013B1
Aug 24 17:49:13 antz-gate postfix/qmgr[4657]: 146DA1013B1: from=<>, size=3296, nrcpt=1 (queue active)
Aug 24 17:49:13 antz-gate postfix/qmgr[4657]: AD4641010B7: removed
Aug 24 17:49:15 antz-gate postfix/smtp[4668]: 146DA1013B1: to=<6689363@gmail.com>, relay=gmail-smtp-in.l.google.com[74.125.43.27]:25, delay=2.1, delays=0.17/0/0.15/1.7, dsn=2.0.0, status=sent (250 2.0.0 OK 1314193756 r7si359829bke.168)
Aug 24 17:49:15 antz-gate postfix/qmgr[4657]: 146DA1013B1: removed
вот скрипт из Вашего мануала и только те пункты в которых я произвел изменения
strOutputFileName = «D:\mail\antispam\recipients» — вот здесь я прописал путь до файлика куда должны импортироваться учетки
If objADobject.Mail <> "" Then
objOutputFileName.Writeline( objADobject.Mail & " OK" ) ' *** " OK"- разделение с помощью табуляции **** '
вот в этом пункте я не пойму сюда надо вписывать что либо????
каким способом она была решена?
connect from mail-bw0-f44.google.com[209.85.214.44]
Aug 24 17:49:12 antz-gate postfix/smtpd[4658]: AD4641010B7: client=mail-bw0-f44.google.com[209.85.214.44]
Aug 24 17:49:12 antz-gate postfix/cleanup[4665]: AD4641010B7: message-id=<19718483.20110824174926@gmail.com>
Aug 24 17:49:12 antz-gate postfix/qmgr[4657]: AD4641010B7: from=<6689363@gmail.com>, size=1601, nrcpt=1 (queue active)
Aug 24 17:49:13 antz-gate postfix/local[4666]: AD4641010B7: to=<test@antz.ru>, relay=local, delay=0.69, delays=0.59/0/0/0.09, dsn=5.1.1, status=bounced (unknown user: «test»)
Aug 24 17:49:13 antz-gate postfix/cleanup[4665]: 146DA1013B1: message-id=<20110824134913.146DA1013B1@web.antz.ru>
Aug 24 17:49:13 antz-gate postfix/bounce[4667]: AD4641010B7: sender non-delivery notification: 146DA1013B1
Aug 24 17:49:13 antz-gate postfix/qmgr[4657]: 146DA1013B1: from=<>, size=3296, nrcpt=1 (queue active)
Aug 24 17:49:13 antz-gate postfix/qmgr[4657]: AD4641010B7: removed
Aug 24 17:49:15 antz-gate postfix/smtp[4668]: 146DA1013B1: to=<6689363@gmail.com>, relay=gmail-smtp-in.l.google.com[74.125.43.27]:25, delay=2.1, delays=0.17/0/0.15/1.7, dsn=2.0.0, status=sent (250 2.0.0 OK 1314193756 r7si359829bke.168)
Aug 24 17:49:15 antz-gate postfix/qmgr[4657]: 146DA1013B1: removed
Немного поправил конфиги и заработало
но скриптом импортировать учетки так и не получилось в ручную заводил в файлик
стоит Win2008R2 Exchange 2010
Запускать его на сервере с Exchange который введен в домен бесполезно-неоткуда брать информацию. Запускать его нужно на контроллере домена.
Но на досуге, попробую тестовую среду поднять и протестировать.
наиболее простой вариант, попросить прислать письмо с серверов типа mail,yandex,gmail оттуда проходят т.к. настройки тех серверов выполнены по стандартам. Почему то письмо было отброшено, можно узнать по логам. Но скажу честно, за время работы, а это уже 4й год и жалобы, что не доходят письма, была всего 2 раза. Не дошли письма из банка, причиной было не соответствие адреса HELO и обратного DNS, я это сказал по телефону кому-то из руководства и все это быстро исправили на их стороне.
Ничего не мешает настроить грейлистинг и тогда можно добавлять нужные вам домены и почта будет приходить.
Кстати! Если вы найдете решение свое проблемы- было бы интересно на него взглянуть…
Спам не резал совсем, а просто помечал его в поле «Тема» как [-=SPAM=-]
Потом уже правилами самого почтового клиента у пользователя отправлял такие письма в отдельною папку Спам.
Они просто иногда чистили эту папку. Некоторые даже с удовольствием читали всю эту ахинею. )) Но работе такие письма уже не мешали )
Ах да, забыл. Еще у меня антивирус на Linux рубил письма с вирусами. Те уж точно не доходили до адресата. ))
Было бы очень интересно взглянуть на схему работы вашей системы, ну а если вы напишите отдельную статью, то совсем здорово…
Расшарил шару анонимным доступом по ip. Ее прописал в скрипте.
А в main.cf указал другой путь. Мне кажется так проще.
куда все это скинуть это ваше решение и если оно работает -пусть будет так…
Я, когда все это придумывал, старался сделать чтобы все лежало в соответствующих директориях, чтобы потом было проще искать.
smtpd_helo_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unknown_client,
# проверяем IP на присутствие в спам-листах
reject_rbl_client cbl.abuseat.org,
reject_rbl_client sbl-xbl.spamhaus.org,
reject_rbl_client sbl.spamhaus.org,
reject_rbl_client dnsbl.njabl.org,
check_helo_access regexp:/etc/postfix/helo,
reject_invalid_helo_hostname,
reject_non_fqdn_helo_hostname,
reject_unknown_helo_hostname,
check_sender_access hash:/etc/postfix/access,
check_recipient_access hash:/etc/postfix/recipients,
permit
А если в файле /etc/postfix/recipients одни ok, то смысл в следующей строчке permit? Если пройдет весь список и не увидит нужного адреса, то все равно в permit он пройдет и перейдет в следующую проверку.
Для чего тогда нужен файл с почтовыми адресами если почта проходит все равно?..
2)если почта приходит, значит адресат попал в recipients.db, нужно проверить что он находится в OU которая экспортируется в postfix и перенести в OU содержимое которой не экспортируется.
3) Проверка наличия пользователя производит сам Postfix, иначе для чего вы экспортируете список почтовых ящиков, а этот список выкатывается из AD
И еще вопрос не могу увеличить message_size_limit прописываю в конфиге message_size_limit = message_size_limit перегружаю постфикс да что там постфикс полностью сервер оди черт не увеличивается в конфиге прописано одно а команда выдает следующие:
root@antigate:~# postconf -d|grep -i message_size_limit
message_size_limit = 10240000
Где его прописать чтоб чтоб постфикс съел лимит?!!!
mailbox_transport =
mailbox_transport_maps =
mailq_path = /usr/bin/mailq
manpage_directory = /usr/share/man
maps_rbl_domains =
maps_rbl_reject_code = 554
masquerade_classes = envelope_sender, header_sender, header_recipient
masquerade_domains =
masquerade_exceptions =
master_service_disable =
max_idle = 100s
max_use = 100
maximal_backoff_time = 4000s
maximal_queue_lifetime = 5d
message_reject_characters =
message_size_limit = 10240000
Вот это кусок который нужен по теме иначе там на несколько страниц. Тут лимит 10240000 хотя в конфиге так 26000000…
затем:
Проверить дефолтные настройки
и проверить то что было низменно:
Но есть один вопрос? У меня на сервере Exchange 2 домена для почты 2 организаций.
Может у вас есть решение для моего вопроса.
1 Домен 1 лес я просто
Exchange 2003
делал не я, работаю не давно мне вот досталось в мести со спамом )))).
Проблемма в другом в main.cf как указать втрой домен приёма, тоесть по ваше статье указываю
Проблемма в другом в main.cf как указать втрой домен Exchange, тоесть по ваше статье я пробывал сделать
myhostname = mail.example.com
mydomain = example.com
virtual_mailbox_domains = example.com
в /etc/postfix/transport
добавил
example.com smtp:[192.168.0.20]
exam.ru smtp:[192.168.0.20]
в /etc/postfix/recipients
вписывал 2 своих адресов своих доменов не работает
кпримеру
Ivanov@examle.com
ivanov@examo.ru
на Ivanov@examle.com почта проходит а на ivanov@examo.ru не проходит
www.opennet.ru/openforum/vsluhforumID1/84368.html
Оказывается всё очень просто. В Main.cf нужно добавить запись
relay_domains = example1.com, example2.com, subdomain.example.com
и пересылка почты заработает на все перечисленные домены.
У меня есть ещё один вопрос??? Вот я не делал скрипт не вытягиваю адреса с AD. Пересылка работает нормально. Если я не буду экспартировать адреса что мне за это грозит???
У меня после настройки перестала приходить одна рассылка.
Вот ошибка в логе.
connect from mail2.111.111.ru[83.66.249.88]
Apr 8 22:54:54 MailGateway postfix/smtpd[1678]: 8E7D0100273: client=mail2.111.111.ru[83.66.249.88]
Apr 8 22:54:54 MailGateway postfix/smtpd[1678]: warning: Recipient address rate limit exceeded: 2 from mail2.111.111.ru[83.66.249.88] for service smtp
Apr 8 22:54:54 MailGateway postfix/smtpd[1678]: too many errors after RCPT from mail2.111.111.ru[83.66.249.88]
По ошибке я понял что, что то с отправителем, то есть с его адресом, я думаю, что он отсутствует на самом сервере.
Но другие письма с данного сервера приходят, не работает только рассылка. Как мне можно и что можно сделать, чтобы postfix больше не обращал внимание на этот домен и пропускал все с него письма???
укажите нужное число получателей за раз
Apr 11 09:24:06 MailGateway postfix/smtpd[7590]: 25F12100277: client=mail2.samara.ocs.ru[83.242.249.209]
Apr 11 09:24:06 MailGateway postfix/smtpd[7590]: warning: Recipient address rate limit exceeded: 2 from mail2.samara.ocs.ru[83.242.249.209] for service smtp
Apr 11 09:24:06 MailGateway postfix/smtpd[7590]: too many errors after RCPT from mail2.samara.ocs.ru[83.242.249.209]
Apr 11 09:24:06 MailGateway postfix/smtpd[7590]: disconnect from mail2.samara.ocs.ru[83.242.249.209]
Apr 11 09:24:14 MailGateway postfix/smtpd[7590]: connect from mail2.samara.ocs.ru[83.242.249.209]
Apr 11 09:24:14 MailGateway postfix/smtpd[7590]: warning: Recipient address rate limit exceeded: 3 from mail2.samara.ocs.ru[83.242.249.209] for service smtp
Apr 11 09:24:14 MailGateway postfix/smtpd[7590]: too many errors after RCPT from mail2.samara.ocs.ru[83.242.249.209]
Apr 11 09:24:14 MailGateway postfix/smtpd[7590]: disconnect from mail2.samara.ocs.ru[83.242.249.209]
вот полный лог попытки!!!
А вот с записью mail2.samara.ocs.ru весё нормально и с праяой и с обратной
А каким образом можно добавить определенные адреса, чтобы они не проверялись, а без проверки пропускались на Exchange?
Можно сделать что-то типа адреса ловушки, как это делается, кажется поднималась тема на русскоязычном форуме postfix, но читал я это давно, но поиск рулит…
Скажите если есть такая схема
Exchange-->ASA---> postfix
то есть я не хочу делать постфикс с внутр и внеш интерфейсом, вот будет он только с белым IP тупо релееить на Exch? а в ASA проделаю дырочку для него.
какие принципиальные изменения в конфиге postfix надо будет сделать по сравнению с приведенной выше?
просто получается что и exch и postfix по идее в моем случае будут иметь одино и тоже название машины mail.domain.ru
не вижу никаких проблем, главное чтобы IP и порт Exchange сервера был доступен серверу postfix
у меня есть группы рассылки, и соотв. когда запускаю скрипт, он выводит только ящики, а как бы мне еще вывести имена почтовых адресов групп рассылки?
или только ручками?
Если пользователи ходят через SMTP то их можно перевести на другой порт, например 2525, и пробрасывать на 25 порт Exchange