Exim 4.80 + Exchange 2013 СПАМ на несуществующий ящик

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Demonik
рядовой
Сообщения: 17
Зарегистрирован: 2016-05-04 12:55:15

Exim 4.80 + Exchange 2013 СПАМ на несуществующий ящик

Непрочитанное сообщение Demonik » 2016-05-20 14:06:44

Здравствуйте. Помогите победить проблему. Постараюсь максимально предоставить все что имею на одном письме как примере.
Объясняю: Есть Exchange 2013 выступает как почтовый сервер для организации имеет внешний адрес только для вэб морды для просмотра почты. Так же есть почтовый шлюз на EXIM 4.80 в котором настроены правила для всей входящей почты из вне, открыт только 25 порт.
Exchange 2013 (ex1.tentorium.lan - 10.0.14.6) (Exchange представляется в HELO\EHLO как EX1.TENTORIUM.RU - настроил в коннекторе)
EXIM (mailgw.tentorium.ru - 93.170.7.7)
Спам в основном шлется на ящики которых уже нет, но почему то не отлупливается (у меня нет проверки на валидность ящика на почтовом шлюзе, не знаю можно ли его реализовать).
Сделал следующие, настроил в exchange правило пересылки (алиас) чтоб мне упало такое спамовое письмо и вытащил из аутлука ХЭДЭРЫ.
(подозрительно много пересылок между моими серваками)

Код: Выделить всё

Received: from EX1.TENTORIUM.LAN (10.0.14.6) by EX1.TENTORIUM.LAN (10.0.14.6)
 with Microsoft SMTP Server (TLS) id 15.0.1044.25 via Mailbox Transport; Fri,
 20 May 2016 15:29:54 +0500
Received: from EX1.TENTORIUM.LAN (10.0.14.6) by EX1.TENTORIUM.LAN (10.0.14.6)
 with Microsoft SMTP Server (TLS) id 15.0.1044.25; Fri, 20 May 2016 15:14:45
 +0500
Received: from mailgw.tentorium.ru (93.170.7.7) by EX1.TENTORIUM.LAN
 (195.128.133.109) with Microsoft SMTP Server (TLS) id 15.0.1044.25 via
 Frontend Transport; Fri, 20 May 2016 15:14:45 +0500
Received: from [195.128.133.109] (helo=EX1.TENTORIUM.RU)
	by mailgw.tentorium.ru with esmtp (Exim 4.80)
	(envelope-from <yrqepdv@timareg.co.ua>)
	id 1b3hS9-0006zf-NR
	for ge@tentorium.ru; Fri, 20 May 2016 15:14:45 +0500
X-CrossPremisesHeadersFilteredBySendConnector: EX1.TENTORIUM.LAN
Received: from EX1.TENTORIUM.LAN (10.0.14.6) by EX1.TENTORIUM.LAN (10.0.14.6)
 with Microsoft SMTP Server (TLS) id 15.0.1044.25; Fri, 20 May 2016 14:59:41
 +0500
Received: from mailgw.tentorium.ru (93.170.7.7) by EX1.TENTORIUM.LAN
 (195.128.133.109) with Microsoft SMTP Server (TLS) id 15.0.1044.25 via
 Frontend Transport; Fri, 20 May 2016 14:59:41 +0500
Received: from [195.128.133.109] (helo=EX1.TENTORIUM.RU)
	by mailgw.tentorium.ru with esmtp (Exim 4.80)
	(envelope-from <yrqepdv@timareg.co.ua>)
	id 1b3hDZ-00060s-6M
	for ge@tentorium.ru; Fri, 20 May 2016 14:59:41 +0500
X-CrossPremisesHeadersFilteredBySendConnector: EX1.TENTORIUM.LAN
Received: from EX1.TENTORIUM.LAN (10.0.14.6) by EX1.TENTORIUM.LAN (10.0.14.6)
 with Microsoft SMTP Server (TLS) id 15.0.1044.25; Fri, 20 May 2016 14:44:36
 +0500
Received: from mailgw.tentorium.ru (93.170.7.7) by EX1.TENTORIUM.LAN
 (195.128.133.109) with Microsoft SMTP Server (TLS) id 15.0.1044.25 via
 Frontend Transport; Fri, 20 May 2016 14:44:36 +0500
Received: from [195.128.133.109] (helo=EX1.TENTORIUM.RU)
	by mailgw.tentorium.ru with esmtp (Exim 4.80)
	(envelope-from <yrqepdv@timareg.co.ua>)
	id 1b3gyy-0005HA-81
	for ge@tentorium.ru; Fri, 20 May 2016 14:44:36 +0500
X-CrossPremisesHeadersFilteredBySendConnector: EX1.TENTORIUM.LAN
Received: from EX1.TENTORIUM.LAN (10.0.14.6) by EX1.TENTORIUM.LAN (10.0.14.6)
 with Microsoft SMTP Server (TLS) id 15.0.1044.25; Fri, 20 May 2016 14:29:24
 +0500
Received: from mailgw.tentorium.ru (93.170.7.7) by EX1.TENTORIUM.LAN
 (195.128.133.109) with Microsoft SMTP Server (TLS) id 15.0.1044.25 via
 Frontend Transport; Fri, 20 May 2016 14:29:23 +0500
Received: from [195.128.133.109] (helo=EX1.TENTORIUM.RU)
	by mailgw.tentorium.ru with esmtp (Exim 4.80)
	(envelope-from <yrqepdv@timareg.co.ua>)
	id 1b3gkF-0004Ys-Vr
	for ge@tentorium.ru; Fri, 20 May 2016 14:29:24 +0500
X-CrossPremisesHeadersFilteredBySendConnector: EX1.TENTORIUM.LAN
Received: from EX1.TENTORIUM.LAN (10.0.14.6) by EX1.TENTORIUM.LAN (10.0.14.6)
 with Microsoft SMTP Server (TLS) id 15.0.1044.25; Fri, 20 May 2016 14:28:53
 +0500
Received: from mailgw.tentorium.ru (93.170.7.7) by EX1.TENTORIUM.LAN
 (195.128.133.109) with Microsoft SMTP Server (TLS) id 15.0.1044.25 via
 Frontend Transport; Fri, 20 May 2016 14:28:53 +0500
Received: from [195.128.133.109] (helo=EX1.TENTORIUM.RU)
	by mailgw.tentorium.ru with esmtp (Exim 4.80)
	(envelope-from <yrqepdv@timareg.co.ua>)
	id 1b3gjl-0004XA-3h
	for ge@tentorium.ru; Fri, 20 May 2016 14:28:53 +0500
X-CrossPremisesHeadersFilteredBySendConnector: EX1.TENTORIUM.LAN
Received: from EX1.TENTORIUM.LAN (10.0.14.6) by EX1.TENTORIUM.LAN (10.0.14.6)
 with Microsoft SMTP Server (TLS) id 15.0.1044.25; Fri, 20 May 2016 14:28:52
 +0500
Received: from mailgw.tentorium.ru (93.170.7.7) by EX1.TENTORIUM.LAN
 (195.128.133.109) with Microsoft SMTP Server (TLS) id 15.0.1044.25 via
 Frontend Transport; Fri, 20 May 2016 14:28:52 +0500
Received: from mail.timareg.co.ua ([85.25.150.121] helo=timareg.co.ua)
	by mailgw.tentorium.ru with esmtp (Exim 4.80)
	(envelope-from <yrqepdv@timareg.co.ua>)
	id 1b3gjj-0004WL-MS
	for ge@tentorium.ru; Fri, 20 May 2016 14:28:52 +0500
Received: from timareg.co.ua (azide.co.ua [95.46.114.62])
	by timareg.co.ua (Postfix) with ESMTPA id 2C8FC541750;
	Fri, 20 May 2016 02:50:53 +0300 (EEST)
Message-ID: <c7f901d1b242$6db6d7a0$7df74f25@yrqepdv>
From: =?windows-1251?B?xOXw7ODy7uvu4+j/?= <yrqepdv@timareg.co.ua>
To: <ge@tentorium.ru>
Date: Fri, 20 May 2016 02:50:54 +0300
MIME-Version: 1.0
Content-Type: multipart/related; type="multipart/alternative";
	boundary="----=_NextPart_000_0006_01D1B241.60497420"
X-MSMail-Priority: Normal
X-Mailer: Microsoft Windows Live Mail 14.0.8117.416
X-MimeOLE: Produced By Microsoft MimeOLE V14.0.8117.416
X-Spam-Score: 5.1 (+++++)
X-Spam-Report: Spam detection software, running on the system "mailgw.tentorium.ru", has
 identified this incoming email as possible spam.  The original message
 has been attached to this so you can view it (if it isn't spam) or label
 similar future email.  If you have any questions, see
 the administrator of that system for details.
 
 Content preview:  ?????? ?????? ?????????? ?? ????? >>> ?????? ??????
    ?????????? ?? ????? >>> ?????? ?????? ?????????? ?? ????? >>> [...]
    
 
 Content analysis details:   (5.1 points, 5.0 required)
 
  pts rule name              description
 ---- ---------------------- --------------------------------------------------
  1.4 RCVD_IN_BRBL_LASTEXT   RBL: RCVD_IN_BRBL_LASTEXT
                             [85.25.150.121 listed in bb.barracudacentral.org]
 -0.0 SPF_HELO_PASS          SPF: HELO matches SPF record
 -0.0 T_RP_MATCHES_RCVD      Envelope sender domain matches handover relay
                             domain
 -0.0 SPF_PASS               SPF: sender matches SPF record
  0.0 URIBL_BLOCKED          ADMINISTRATOR NOTICE: The query to URIBL was blocked.
                             See
                             http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block
                              for more information.
                             [URIs: trunid.co.ua]
  0.4 HTML_IMAGE_RATIO_02    BODY: HTML has a low ratio of text to image area
  0.0 HTML_MESSAGE           BODY: HTML included in message
  1.7 HTML_IMAGE_ONLY_08     BODY: HTML: images with 400-800 bytes of words
  0.8 BAYES_50               BODY: Bayes spam probability is 40 to 60%
                             [score: 0.4999]
  0.8 MPART_ALT_DIFF         BODY: HTML and text parts are different
  0.0 HTML_SHORT_LINK_IMG_1  HTML is very short with a linked image
Subject: ***SPAM*** ???????????? ???????? ?? ????????????,  ?????? ?? ??????????????????
X-OrganizationHeadersPreserved: EX1.TENTORIUM.LAN
X-OrganizationHeadersPreserved: EX1.TENTORIUM.LAN
X-OrganizationHeadersPreserved: EX1.TENTORIUM.LAN
X-OrganizationHeadersPreserved: EX1.TENTORIUM.LAN
X-OrganizationHeadersPreserved: EX1.TENTORIUM.LAN
X-SA-Exim-Connect-IP: 195.128.133.109
X-SA-Exim-Mail-From: yrqepdv@timareg.co.ua
X-SA-Exim-Scanned: No (on mailgw.tentorium.ru); Message bigger than SAmaxbody (256000)
Return-Path: yrqepdv@timareg.co.ua
X-MS-Exchange-Organization-Network-Message-Id: dacaf32e-9274-4efe-14cc-08d380979163
X-MS-Exchange-Organization-AVStamp-Enterprise: 1.0
X-MS-Exchange-Organization-AuthSource: EX1.TENTORIUM.LAN
X-MS-Exchange-Organization-AuthAs: Anonymous
В Exim строчка имеет вид такой, в ней почему то адрес левы а в HELO подставляется мой домен и мой IP от EXCHANGE.

Код: Выделить всё

2016-05-20 16:03:41 1b3iDV-0000q1-F6 SA: Debug: SAEximRunCond expand returned: 'true'
2016-05-20 16:03:41 1b3iDV-0000q1-F6 SA: Debug: check succeeded, running spamc
2016-05-20 16:03:41 1b3iDV-0000q1-F6 SA: Action: flagged as Spam but accepted: score=13.1 required=5.0 (scanned in 0/0 secs | Message-Id: 5b0601d1b217_3eec71d0_8b4fc379@ucjevmc). From <ucjevmc@holihik.co.ua> (host=NULL [195.128.133.109]) for persona@tentorium.ru
2016-05-20 16:03:41 1b3iDV-0000q1-F6 <= ucjevmc@holihik.co.ua H=(EX1.TENTORIUM.RU) [195.128.133.109] I=[93.170.7.7]:25 P=esmtp S=121310 id=5b0601d1b217$3eec71d0$8b4fc379@ucjevmc from <ucjevmc@holihik.co.ua> for persona@tentorium.ru
2016-05-20 16:03:41 1b3iDV-0000q1-F6 => persona@tentorium.ru R=exchange_router T=remote_smtp H=autodiscover.tentorium.ru [195.128.133.109] X=TLS1.0:RSA_AES_256_CBC_SHA1:256 C="250 2.6.0 <5b0601d1b217$3eec71d0$8b4fc379@ucjevmc> [InternalId=45638322487314, Hostname=EX1.TENTORIU"
2016-05-20 16:03:41 1b3iDV-0000q1-F6 Completed
Че происходит я уже запутался....
Помогите решить проблему, куда покапать. Бьюсь уже 2е недели. Логи везде смотрю, детальнее хэдэров ещё ниче не увидил.
ЧТо ещё нужно для анализа проблемы?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Exim 4.80 + Exchange 2013 СПАМ на несуществующий ящик

Непрочитанное сообщение xM » 2016-05-20 22:15:55

Так вы проблему то не сформулировали.
Видимо, она в том, что шлюз на Exim шлёт спам на несуществующие в Exchange ящики?
Если так, то делайте проверку recipient.
Как именно лучше её сделать я не могу сказать, поскольку не вижу конфига Exim.
IT voodoo blog https://kostikov.co

Demonik
рядовой
Сообщения: 17
Зарегистрирован: 2016-05-04 12:55:15

Exim 4.80 + Exchange 2013 СПАМ на несуществующий ящик

Непрочитанное сообщение Demonik » 2016-05-21 9:03:15

xM писал(а):Так вы проблему то не сформулировали.
Видимо, она в том, что шлюз на Exim шлёт спам на несуществующие в Exchange ящики?
Если так, то делайте проверку recipient.
Как именно лучше её сделать я не могу сказать, поскольку не вижу конфига Exim.
Спасибо за ответ. Я так понимаю что могу реализовать проверку на получателя с экзима на эксчейндж по полю рецепиент. Конфигурация могу выложить чуть позже. Попробую - отпишу!

Отправлено спустя 49 минут 49 секунд:
Вот конфиг, модифицировал уже имеющийся. Не совсем во всем разбираюсь. Но стараюсь понять!!!

Код: Выделить всё

#!/bin/sh

DKIM_ENABLE = yes

#Временное решенеи проти ошибки в логах
keep_environment =

# Интерфейсы, которые слушаем
local_interfaces = 93.170.7.7

local_scan_path = /usr/lib/exim4/local_scan/sa-exim.so

# моя конфига экзма. Будь проклят тот день,
# когда мне пришла в голову мысль подписать
# русские поясния ко всем пунктам! :) Хоть и
# делал я это в первую очередь для себя -
# чтоб лучше понять его, но работа эта оказалась
# слишком масштабная и неблагодарная...

# Имя хоста. Используется в EHLO.
# Фигурирует в других пунктах, если они не заданы -
# типа qualify_domain и прочих..
# Если тут ничё не установлено (строка закомметрована)
# то используется то, что вернёт функция uname()
primary_hostname = mailgw.tentorium.ru

# Вводим данные для подключения к MySQL серверу.
# словечко `hide`, вначале, означает, что при
# вызове проверки конфига командой
# exim -bV config_file эти данные не будут отображаться.
# Если без него - то будут показаны... Формат записи:
# хост/имя_бд/пользователь/пароль
#hide mysql_servers = localhost/exim/exim_s/YurayaeDNYVJUsdN

#Настройка TLS
#tls_on_connect_ports = 465
#tls_advertise_hosts = *
#tls_certificate = /etc/ssl/exim4.pem
#tls_privatekey = /etc/ssl/exim4.key

#tls_certificate = /etc/exim4/ssl/tentorium.reg-ssl.crt
#tls_privatekey = /etc/exim4/ssl/tentorium.reg-ssl.key



# Делаем список локальных доменов. Далее этот
# список будет фигурировать в виде +local_domains
# В данном случае домены выбираются из БД MySQL. Также
# можно их просто перечислить через двоеточие. Есть интересная
# возможность, можно указать юзер@[хост] - lissyara@[222.222.4.5]
#domainlist local_domains = ${lookup mysql{SELECT `domain` \
#FROM `domain` WHERE \
#`domain`='${domain}' AND \
#`active`='1'}}
domainlist local_domains = tentorium.ru : tentorium.biz
#domainlist local_domains = @

# делаем список доменов с которых разрешены релеи.
# Далее этот список будет в виде +relay_to_domains
# Можно использовать символы подстановки, типа:
# .... = *.my.domen.su : !spam.my.domen.su : first.su
# тогда пропускается всё, что похоже на *.my.domen.su, но
# от spam.my.domen.su релеится почта не будет.
#domainlist relay_to_domains = ${lookup mysql{SELECT `domain` \
#FROM `domain` WHERE \
#`domain`='${domain}' AND \
#`active`='1'}}
domainlist relay_to_domains = tentorium.ru : tentorium.biz

# Составляем список хостов с которых разрешён неавторизованый
# релей. Обычно в нём находятся локальные сети, и локалхост...
# ЛокалХост в двух видах был внесён сознательно - пару раз
# сталкивался с кривым файлом /etc/hosts - результатом было
# непонимание `localhost` но пониманием 127.0.0.1/8
hostlist relay_from_hosts = localhost : 127.0.0.0/8 : 91.230.61.159 : 93.170.7.66 : 93.170.7.2 : 195.128.133.109

#-----------------------------------------------------------------------------------------------------------------------------------------------------
#
#
#-------------------------------------------------------------------------------------------------------------------------------------------------------

# exim может быть настроен для разрешения безоговорочного
# релея от клиентов, путём проверки IP-адреса
# auth_advertise_hosts = ! 192.168.2.0/24
# Разрешаем аунтификацию клиентам только из нашей сети
# Это делаем для того чтобы из внешнего мира никто не мог подобрать пароль на отправку
#auth_advertise_hosts = localhost : 127.0.0.0/8 : 195.128.133.0/24 : 93.170.7.0/24 : 46.146.206.183 : 91.230.61.159

# Домены, для которых требуется наличие правильной DKIM-подписи
domainlist dkim_required_domains = *

# Вводим названия acl`ов для проверки почты. (В общем-то, это
# необязательно, если вы делаете открытый релей, или хотите
# принимать вообще всю почту с любого хоста для любых
# получателей... Тока потом не жалуйтесь что у Вас спам
# и провайдер выкатывает немеряный счёт :))
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data
acl_smtp_dkim = acl_check_dkim

# Прикручиваем антивирус - при условии, что exim собран
# с его поддержкой. В качестве антивиря юзаем ClamAV,
# ибо - ПО должно быть свободным! :)
# Итак, указываем местоположение сокета clamd.
av_scanner = clamd:/var/run/clamav/clamd.ctl

# Адрес куда слать на проверку спама (SpamAssasin), но я
# это не юзаю. Не так много у меня спама...

spamd_address = 127.0.0.1 783


#spamd_address = 127.0.0.1 11333 variant=rspamd

# Имя домена добавляемое для локальных отправителей (реальных
# юзеров системы) т.е. почта отправляемая от root, будет от
# root@домен_указанный_здесь. Если пункт незадан, то используется
# имя хоста из `primary_hostname`. Логичней было бы написать здесь
# lissyara.su, но мне удобней иначе:
qualify_domain = tentorium.ru

# Имя хоста для ситуации, обратной предыдущей, - это имя домена
# добавляемое к почте для системных юзеров, ну и вообще для почты
# пришедшей на адрес типа `root`, `lissyara`, & etc... Если этот
# пункт незадан то используется значение полученное из
# предыдущего пункта - `qualify_domain`
#qualify_recipient =

# А это как раз кусок вышеописанного анахронизма - про почту в
# виде user@[222.222.222.222] - принимать её или нет. По дефолту
# (когда строка закомментирована) значение - false. Если захотите
# поставить true то надо будет добавить в список доменов
# комбинацию @[] - она означает `все локальные адреса`
allow_domain_literals = false

# Пользователь от которого работает exim
exim_user = Debian-exim

# группа в кторой работает exim
exim_group = Debian-exim

# запрещаем работу доставки под юзером root - в целях безопасности
never_users = root

# Проверяем соответствие прямой и обратной зон для всех хостов.
# Тока зачем это нужно - даже и незнаю... Спам на этом не режется...
# Зато возможны проблемы - если сервер зоны скажет `сервер файлед`
# то почту от этого хоста Вы не получите :)
host_lookup = *

# Тоже анахронизм (на самом деле, не такой уж анахронизм, но все давно
# забили на ident и закрыли файрволлом tcp:113...) Это проверка - Ваш
# хост спрашивает у удалённого, с которого было подключение, а кто
# собстно ко мне подключился на такой-то порт? Если на удалённом хосте
# работает identd - он может ответить (а может и не ответить - как
# настроить), скажет UID пользователя от которого установлено
# соединение, тип ОС, и имя пользователя. Теперь, понимаете, почему
# у всех оно зарублено и файрволлами позакрыто? :) Это же палево :)
# Тока на мой взгляд, если на сервере всё настроено правильно -
# то вовсе это и не страшно.
# Короче - если хостс поставить * то будет проверять все. Таймаут -
# если поставить 0 то не будет ждать ответа ни от кого. По
# вышеописанным причинам - отключаем
#rfc1413_hosts = *
rfc1413_query_timeout = 0s

# По дефолту, экзим отфутболивает все `неквалифицированные` адреса,
# состоящие тока из локальной части. Для того чтобы разрешить такие письма
# определённых хостов используются эти директивы:
# для `неквалифицированных` отправителей
sender_unqualified_hosts = +relay_from_hosts
# для `неквалифицированных` получателей
recipient_unqualified_hosts = +relay_from_hosts

# Интересный пункт, тока я не вполне понимаю его логику.
# Позволяет выполнять что-то типа - пришло сообщение на
# локальный ящик user%test.su@lissyara.su и
# переправляет его на user@test.su. Делается это для
# перечисленного списка доменов (* - все):
# percent_hack_domains = *

# Если сообщение было недоставлено, то генерится соощение
# об ошибке. Если сообщение об ошибке не удалось доставить
# то оно замораживается на указанный в этом пункте срок,
# после чего снова попытка доставить его. При очередной
# неудаче - сообщение удаляется.
ignore_bounce_errors_after = 45m

# Замороженные сообщения, находящиеся в очереди, дольше
# указанного времени удаляются и генерится сообщение
# об ошибке (при условии, что это не было недоставленное
# сообщение об ошибке :))
timeout_frozen_after = 7d

# собсно на этом штатный конфиг кончился, но
# меня-то это не устраивает... Поэтому пошли пункты,
# почёрпнутые из других источников.

# список адресов, через запятую, на которые засылаются
# сообщения о замороженных сообщениях (о замороженых
# уведомлениях о заморозке, сообщения не генерятся. - я
# надеюсь эта строка понятна :))
#freeze_tell =

# Список хостов, почта от которых принимается, несмотря
# на ошибки в HELO/EHLO (тут указана моя подсеть)
#helo_accept_junk_hosts = 192.168.0.0/16
helo_accept_junk_hosts = 93.170.7.0/24 : 195.128.133.0/24

#На каком порту будет работать демон SMTP
disable_ipv6
daemon_smtp_ports = 25


# Через какое время повторять попытку доставки
# замороженного сообщения
auto_thaw = 1h

# Приветствие сервера
smtp_banner = "$primary_hostname, ESMTP EXIM $version_number"

# Максимальное число одновременных подключений по
# SMTP. Рассчитывать надо исходя из нагрузки на сервер
smtp_accept_max = 1000

# максимальное число сообщений принимаемое за одно соединение
# от удалённого сервера (или пользователя). C числом 25
# я имел проблемы тока один раз - когда у меня три дня лежал
# инет и после его подъёма попёрли мессаги. Но у меня не так
# много почты - всего 30 пользователей.
smtp_accept_max_per_connection = 2000

# чё-то про логи и борьбу с флудом - я так понимаю -
# максимальное число сообщений записываемых в логи
smtp_connect_backlog = 30

# максимальное число коннектов с одного хоста
smtp_accept_max_per_host = 20
smtp_accept_queue_per_connection = 50

# Ход ладьёй - для увеличения производительности,
# директория `spool` внутри, разбивается на
# директории - это ускоряет обработку
split_spool_directory = true

# Если у сообщения много адресатов на удалённых хостах,
# то запускатеся до указанного числа максимально число
# параллельных процессов доставки
remote_max_parallel = 15

# при генерации сообщения об ошибке прикладывать
# не всё сообщение, а кусок (от начала) указанного
# размера (иногда полезно и целиком - в таком случае
# просто закомментируйте эту строку)
return_size_limit = 70k

# размер сообщения. У меня стоит относительно большой
# размер (`относительно` - потому, что на большинстве
# хостов оно ограничено 2-5-10мб, либо стоит анлим.)
message_size_limit = 10M

# разрешаем неположенные символы в HELO (столкнулся
# с этим случайно - имя фирмы состояло из двух слов
# и какой-то раздолбай домен обозвал my_firme_name
# прям с подчёркиваниями... Виндовые клиенты при
# соединении радостно рапортовали о себе
# `vasya.my_firme_name` ну а экзим их футболил :))
helo_allow_chars = _

# Принудительная синхронизация. Если отправитель
# торопится подавать команды, не дождавшись ответа,
# то он посылается далеко и надолго :) Немного,
# спам режется.
smtp_enforce_sync = true

# Выбираем, что мы будем логировать
# + - писать в логи,
# - - Не писать в логи.
# +all_parents - все входящие?
# +connection_reject - разорваные соединения
# +incoming_interface - интерфейс (реально - IP)
# +lost_incoming_connections - потеряные входящие
# соединения
# +received_sender - отправитель
# +received_recipients - получатель
# +smtp_confirmation - подтверждения SMTP?
# +smtp_syntax_error - ошибки синтаксиса SMTP
# +smtp_protocol_error - ошибки протокола SMTP
# -queue_run - работа очереди (замороженные мессаги)
log_selector = \
+all_parents \
+connection_reject \
+incoming_interface \
+lost_incoming_connection \
+received_sender \
+received_recipients \
+smtp_confirmation \
+smtp_syntax_error \
+smtp_protocol_error \
-queue_run

# Убираем собственную временную метку exim`a из логов, её ставит
# сам syslogd - нефига дублировать
syslog_timestamp = no

### конфигурация ACL для входящей почты
begin acl

# Эти правила срабатывают для каждого получателя
acl_check_rcpt:

# Принимаем сообщения от тех, кто аутентифицировался
#accept authenticated = *

# принимать сообщения которые пришли с локалхоста,
# не по TCP/IP
#accept hosts = :

# Запрещаем письма содержащие в локальной части
# символы @; %; !; /; |. Учтите, если у вас было
# `percent_hack_domains` то % надо убрать.
# Проверяются локальные домены
deny message     = Reject: incorrect symbol in address
 log_message     = REJECT: incorrect symbol in address
 domains         = +local_domains
 local_parts     = ^[.] : ^.*[@%!/|]

# Проверяем недопустимые символы для
# нелокальных получателей:
deny message     = Reject: incorrect symbol in address
 log_message     = REJECT: incorrect symbol in address
 domains         = !+local_domains
 local_parts     = ^[./|] : ^.*[@%!] : ^.*/\\.\\./

#require verify   = sender

# Принимаем почту для постмастеров локальных доменов без
# проверки отправителя (я закомментировал, т.к. это -
# основной источник спама с мой ящик).

#acceptlocal_parts = postmaster
#domains = +local_domains

# Запрещщаем, если невозможно проверить отправителя
# (отсутствует в списке локальных пользователей)
# У себя я это закоментил, по причине, что некоторые
# железяки (принтеры, & etc) и программы (Касперский, DrWEB)
# умеют слать почту, в случае проблем но не умеют ставить
# нужного отправителя. Такие письма эта проверка не пускает.
#require verify= sender

# Запрещщаем тех, кто не обменивается приветственными
# сообщениями (HELO/EHLO)
deny message     = Reject: HELO/EHLO require by SMTP RFC
 log_message     = REJECT: HELO/EHLO require by SMTP RFC
 condition       = ${if eq{$sender_helo_name}{}{yes}{no}}

# Рубаем хело с нашим именем
deny condition   = ${if match_domain{$sender_helo_name} \
                    {$primary_hostname:+local_domains:+relay_to_domains} \
                    {true}{false}}
 hosts           = !+relay_from_hosts: *
 message         = Reject: My name in your HELO
 log_message     = REJECT: remote host used our name in HELO/EHLO.

# Рубаем тех, кто подставляет в HELO пихает мой hostname
deny message     = "Access denied - HELO/EHLO don't must contain a [$sender_helo_name]"
 hosts           = !127.0.0.1 : !localhost : !+relay_from_hosts  : *
 condition       = ${if eq{$sender_helo_name}{$primary_hostname}}

# Рубаем нах, тех, кто подставляет свой IP в HELO
deny condition   = ${if isip{$sender_helo_name}{yes}{no}}
 hosts           = !+relay_from_hosts: *
 message         = Reject: Your IP in HELO - access denied!
 log_message     = REJECT: Your IP in HELO - access denied!

# Рубаем тех, кто в HELO пихает мой IP (2500 мудаков за месяц!)
deny condition   = ${if eq{$sender_helo_name}\
                    {$interface_address}{yes}{no}}
 hosts           = ! 127.0.0.1 : ! localhost : *
 message         = My IP in your HELO! Access denied!
 log_message     = My IP in your HELO! Access denied!

drop condition   = ${if match{$sender_helo_name}{93.170.7.7}{yes}{no} }
 hosts           = ! 127.0.0.1 : ! localhost : *
 message         = My IP in your HELO! Access denied!
 log_message     = My IP in your HELO! Access denied!

# Рубаем тех, кто в HELO пихает только цифры
# (не бывает хостов ТОЛЬКО из цифр)
deny condition   = ${if match{$sender_helo_name}{\N^\d+$\N}{yes}{no}}
 hosts           = ! 127.0.0.1 : ! localhost : *
 message         = Can not be only number in HELO!
 log_message     = REJECT: Invalid symbols in HELO
 hosts           = !127.0.0.1 : !localhost : !+relay_from_hosts : *

deny condition   = ${if match{$sender_helo_name}{^[0-9]\.[0-9]\.[0-9]\.[0-9]}{yes}{no} }
 hosts           = ! 127.0.0.1 : ! localhost : *
 message         = Dropped IP-only or IP-starting helo
 log_message     = REJECT: Invalid symbols in HELO
 hosts           = !127.0.0.1 : !localhost : !+relay_from_hosts : *

deny condition   = ${if match{$sender_helo_name}{\N_\N}{yes}{no}}
 message         = Reject: Invalid symbols in HELO
 log_message     = REJECT: Invalid symbols in HELO
 hosts           = !127.0.0.1 : !localhost : !+relay_from_hosts : *

# Рубаем тех, кто не пишет отправителя (пробел)
deny condition   = ${if match{$sender_address}{\N^\s+$\N}{yes}{no}}
 hosts           = !127.0.0.1 : !localhost : !+relay_from_hosts : *
 message         = А какого HELO пустое (тока пробелы)?! Не по RFC...
 log_message     = Пробелы в HELO

# Рубаем хосты типа *adsl*; *dialup*; *pool*;....
# Нормальные люди с таких не пишут. Если будут
# проблемы - уберёте проблемный пункт (у меня клиенты
# имеют запись типа asdl-1233.zone.su - я ADSL убрал...)
deny message     = REJECT: Your hostname is bad (adsl, poll, ppp & etc).
 condition       = ${if match{$sender_host_name}{adsl|dialup|pool|peer|dhcp}{yes}{no}}
 log_message     = REJECT: Connect with adsl:dialup:pool:peer:dhcp.

#--------------------------- Видимо нужно ещё чтото с роутером делать!!!
# Проверка существования E-Mail'a отправителя для внешних клиентов
deny      log_message   = Отправитель неправильный
          !authenticated = *
          !verify       = sender/callout=20s,defer_ok,maxwait=30s

#Запрещаем принимать почту для пустого MAIL FROM, убрал для проверки отпрвителя (в татфонд банк недохолдят)
#deny senders = :

# Отклоняем письма, не соответствующие политике домена отправителя (надо собрать с СПФ)
#deny message          = [SPF] $sender_host_address is not allowed to send mail from $sender_address_domain
#     spf              = fail
#     log_message      = SPF check failed.
#     add_header       = :at_start:Authentication-Results: mailgw.tentorium.ru; spf=$spf_verify_status (mailgw.tentorium.ru: domain of $sender_address designates $sender_host_address as permitted sender)

# Рубаем тех, кто в блэк-листах. Серваки перебираются
# сверху вниз, если не хост не найден на первом, то
# запрашивается второй, и т.д. Если не найден ни в одном
# из списка - то почта пропускается.
deny message     = "You in blacklist - $dnslist_domain $dnslist_text; $dnslist_value"
 hosts           = !+relay_from_hosts
 dnslists        = zen.spamhaus.org : bl.spamcop.net : bad.psky.me

# Тут используем серые списки
defer message    = Greylisting in action, try later
 log_message     = Greylisted.
 !senders        = : *@tentorium.ru : *@tentorium.biz : *@lists.tentorium.ru : *@gmail.com : *@mail.ru : *@inbox.ru : *@bk.ru : *@list.ru  : *@rambler.ru : *@yandex.ru : *@lists.tentorium.ru
 !hosts          = ${if exists{/etc/greylistd/whitelist-hosts}\
                    {/etc/greylistd/whitelist-hosts}{}} : \
                   ${if exists{/var/lib/greylistd/whitelist-hosts}\
                    {/var/lib/greylistd/whitelist-hosts}{}}
 condition       = ${readsocket{/var/run/greylistd/socket}\
                    {--grey $sender_host_address $sender_address $local_part@$domain}\
                    {5s}{}{false}}

#После всех экзикуций принимаем почту только для наших доменов (указаных в переменных)
accept hosts     = +relay_from_hosts
accept domains   = +relay_to_domains

# Если неподошло ни одно правило - чувак явно ищет
# открытый релей. Пшёл прочь. :)
deny message     = Access deny - this not open relay!
 log_message     = REJECT: We arent an open relay

#------------------------------------------------------------------------------------------------------------------------------------------

# Тут идут ACL проверяющие содержимое (тело) письма.
# Без них будут пропускаться все сообщения.

acl_check_data:

# Сообщения с NUL-символами
deny message     = This message contains NUL characters
 log_message     = REJECT: NUL characters!
 condition       = ${if >{$body_zerocount}{0}{1}{0}}

# Синтаксис заголовков
deny message     = Incorrect headers syntax
 log_message     = REJECT: Incorrect header syntax
 hosts           = !+relay_from_hosts:*
 !verify         = header_syntax

# Распаковываем контейнеры MIME и режем серьезные ошибки
deny message     = This message contains a MIME error ($demime_reason)
 log_message     = REJECT: Error in MIME
 demime          = *
 condition       = ${if >{$demime_errorlevel}{2}{1}{0}}

# Режем типично вирусные расширения файлов
deny message     = Bad file extension ($found_extension)
 log_message     = REJECT: Bad attachment
 demime          = scr:vbs:bat:lnk:pif

deny message     = Possible CMD file attack ($found_extension)
 log_message     = REJECT: Bad attachment
 demime          = cmd

deny message     = Possible COM file attack ($found_extension)
 log_message     = REJECT: Bad attachment
 demime          = com

deny message     = Possible Microsoft JScript attack ($found_extension)
 log_message     = REJECT: Bad attachment
 demime          = js

deny message     = Possible Windows registry attack ($found_extension)
 log_message     = REJECT: Bad attachment
 demime          = reg

deny message     = Possible compiled Help file-base virus ($found_extension)
 log_message     = REJECT: Bad attachment
 demime          = chm

deny message     = Possible SpeedDial attack ($found_extension)
 log_message     = REJECT: Bad attachment
 demime          = cnf

deny message     = Possible Micrsoft HTML archive attack ($found_extension)
 log_message     = REJECT: Bad attachment
 demime          = hta

deny message     = Possible Microsoft Internet Settings attack ($found_extension)
 log_message     = REJECT: Bad attachment
 demime          = ins

deny message     = Possible Windows Explorer Command attack ($found_extension)
 log_message     = REJECT: Bad attachment
 demime          = scf

deny message     = Possible Microsoft Windows Script attack ($found_extension)
 log_message     = REJECT: Bad attachment
 demime          = sct

deny message     = Possible Microsoft VBScript attack ($found_extension)
 log_message     = REJECT: Bad attachment
 demime          = vbs:vbe

deny message     = Possible Microsoft Script Host attack ($found_extension)
 log_message     = REJECT: Bad attachment
 demime          = wsc:wsf:wsh

deny message     = Possible Exchange Shortcut attack ($found_extension)
 log_message     = REJECT: Bad attachment
 demime          = xnk

deny message     = Possible Microsoft Access Shortcut attack ($found_extension)
 log_message     = REJECT: Bad attachment
 demime          = mad:maf:mag:mam:maq:mar:mas:mat:mav:maw

# Запрет приема писем содержащих вирусы
deny message     = message contains a virus ($malware_name)
 malware         = *
 log_message     = message contains a virus ($malware_name)

# Проверка Спама
warn message     = X-Spam-Score: $spam_score ($spam_bar)
 hosts           = !+relay_from_hosts
 spam            = spamd:true

warn message     = X-Spam-Report: $spam_report
 hosts           = !+relay_from_hosts
 spam            = spamd:true

warn message     = Subject: ***SPAM*** $h_Subject:
 hosts           = !+relay_from_hosts
 spam            = spamd

# Пропускаем остальное
accept

#Проверка ACL DKIM
acl_check_dkim:

# Отклоняем письма, не содержащие DKIM-подпись
deny message = Valid DKIM signature needed for mail from $sender_domain
 sender_domains  = +dkim_required_domains
 dkim_status     = none
 add_header      = :at_start:Authentication-Results-DKIM: Exim 4.80 on mailgw.tentorium.ru (no dkim signature)
 logwrite        = DKIM test NONE (address=$sender_address domain=$dkim_cur_signer), none signature.

# Отклоняем письма, содержащие DKIM-подпись, если она fail
deny message     = Wrong DKIM signature
 sender_domains  = +dkim_required_domains
 dkim_status     = fail
 add_header      = :at_start:Authentication-Results-DKIM: mailgw.tentorium.ru, header.i=$dkim_cur_signer ($dkim_verify_status); reason=$dkim_verify_reason
 logwrite        = DKIM test FAIL (address=$sender_address domain=$dkim_cur_signer), fai signature.

# Принимаем письма, содержащие DKIM-подпись, если она invalid
accept message   = Invalid DKIM signature
 sender_domains  = +dkim_required_domains
 dkim_status     = invalid
 add_header      = :at_start:Authentication-Results-DKIM: mailgw.tentorium.ru, header.i=$dkim_cur_signer ($dkim_verify_status); reason=$dkim_verify_reason
 logwrite        = DKIM test PASS (address=$sender_address domain=$dkim_cur_signer), but signature is invalid.

# Принимаем письма, содержащие DKIM-подпись, если проверка прошла успешно
accept message   = Good DKIM signature
 sender_domains  = +dkim_required_domains
 dkim_status     = pass
 add_header      = :at_start:Authentication-Results-DKIM: mailgw.tentorium.ru; dkim=$dkim_verify_status, header.i=@$dkim_cur_signer
 logwrite        = DKIM test PASS (address=$sender_address domain=$dkim_cur_signer), good signature.

#Пропускаем остальное
accept

#-----------------------------------------------------------------------------------------------------------------------------------
# чё делаем с почтой
#############
begin routers
#############

# Роутер для Exchange, почтовый шлюз как никак.
exchange_router:
    driver = manualroute
    domains = tentorium.biz : tentorium.ru
    transport = remote_smtp
    route_list = * vmail.tentorium.ru
no_more

# Поиск маршрута к хосту в DNS. Если маршрут не найден в DNS -
# то это `унроутабле аддресс`. Не проверяются локальные
# домены, 0.0.0.0 и 127.0.0.0/8

dnslookup:
driver = dnslookup
domains = !+local_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
no_more

# смотрим альясы
system_aliases:
driver = redirect
allow_fail
allow_defer
domains = tentorium.ru : tentorium.biz
data = ${lookup{$local_part}lsearch{/etc/aliases}}

# начинаются транспорты - как доставляем почту

################
begin transports
################

DKIM_DOMAIN                     = ${lc:${domain:$h_from:}}
DKIM_FILE                       = /etc/exim4/dkim/${lc:${domain:$h_from:}}.key
DKIM_PRIVATE_KEY                = ${if exists{DKIM_FILE}{DKIM_FILE}{0}}

# Доставка на удалённые хосты - по SMTP

remote_smtp:
    driver = smtp
    interface = 93.170.7.7
    dkim_domain           = DKIM_DOMAIN
    dkim_selector         = dkimt
    dkim_private_key      = DKIM_PRIVATE_KEY

# Имя программы
#address_pipe:
#driver = pipe
#return_output

# Транспорт для автоответов
#address_reply:
#driver = autoreply

# Начинаются повторы недоставленных писем.
begin retry

# Этот кусок я не трогал. Думаю разработчики лучше знают,
# какие тут должны быть цифирьки. Если же вы это знаете
# лучше их - меняйте. Хотя... А какого, если Вы такой
# умный, читаете этот мануал? Может ну, их, цифирьки, а? :)
# Address or DomainError Retries
# ---------------------- -------
*                      *           F,2h,15m; G,16h,1h,1.5; F,4d,6h

Я так понимаю одного правила в АСЛ нехватает, нужно ещё что-то с роутером делать так?

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Exim 4.80 + Exchange 2013 СПАМ на несуществующий ящик

Непрочитанное сообщение xM » 2016-05-21 12:55:38

Я не могу это читать. Удаляйте комментарии перед постом конфига.
Вкратце, вам нужно добавить что-то вроде
accept domains = +your_domains
endpass
message = User not found
verify = recipient/callout=5s
ближе к концу acl_check_rcpt: но перед финальным deny
IT voodoo blog https://kostikov.co

Demonik
рядовой
Сообщения: 17
Зарегистрирован: 2016-05-04 12:55:15

Exim 4.80 + Exchange 2013 СПАМ на несуществующий ящик

Непрочитанное сообщение Demonik » 2016-05-21 16:14:32

Вот только АСЛ без коментов, сделал как сказали, логина ясна но нерабоатет (

Код: Выделить всё

begin acl

acl_check_rcpt:



deny message     = Reject: incorrect symbol in address
 log_message     = REJECT: incorrect symbol in address
 domains         = +local_domains
 local_parts     = ^[.] : ^.*[@%!/|]

deny message     = Reject: incorrect symbol in address
 log_message     = REJECT: incorrect symbol in address
 domains         = !+local_domains
 local_parts     = ^[./|] : ^.*[@%!] : ^.*/\\.\\./

deny message     = Reject: HELO/EHLO require by SMTP RFC
 log_message     = REJECT: HELO/EHLO require by SMTP RFC
 condition       = ${if eq{$sender_helo_name}{}{yes}{no}}

deny condition   = ${if match_domain{$sender_helo_name} \
                    {$primary_hostname:+local_domains:+relay_to_domains} \
                    {true}{false}}
 hosts           = !+relay_from_hosts: *
 message         = Reject: My name in your HELO
 log_message     = REJECT: remote host used our name in HELO/EHLO.

deny message     = "Access denied - HELO/EHLO don't must contain a [$sender_helo_name]"
 hosts           = !127.0.0.1 : !localhost : !+relay_from_hosts  : *
 condition       = ${if eq{$sender_helo_name}{$primary_hostname}}

deny condition   = ${if isip{$sender_helo_name}{yes}{no}}
 hosts           = !+relay_from_hosts: *
 message         = Reject: Your IP in HELO - access denied!
 log_message     = REJECT: Your IP in HELO - access denied!

deny condition   = ${if eq{$sender_helo_name}\
                    {$interface_address}{yes}{no}}
 hosts           = ! 127.0.0.1 : ! localhost : *
 message         = My IP in your HELO! Access denied!
 log_message     = My IP in your HELO! Access denied!

drop condition   = ${if match{$sender_helo_name}{93.170.7.7}{yes}{no} }
 hosts           = ! 127.0.0.1 : ! localhost : *
 message         = My IP in your HELO! Access denied!
 log_message     = My IP in your HELO! Access denied!

deny condition   = ${if match{$sender_helo_name}{\N^\d+$\N}{yes}{no}}
 hosts           = ! 127.0.0.1 : ! localhost : *
 message         = Can not be only number in HELO!
 log_message     = REJECT: Invalid symbols in HELO
 hosts           = !127.0.0.1 : !localhost : !+relay_from_hosts : *

deny condition   = ${if match{$sender_helo_name}{^[0-9]\.[0-9]\.[0-9]\.[0-9]}{yes}{no} }
 hosts           = ! 127.0.0.1 : ! localhost : *
 message         = Dropped IP-only or IP-starting helo
 log_message     = REJECT: Invalid symbols in HELO
 hosts           = !127.0.0.1 : !localhost : !+relay_from_hosts : *

deny condition   = ${if match{$sender_helo_name}{\N_\N}{yes}{no}}
 message         = Reject: Invalid symbols in HELO
 log_message     = REJECT: Invalid symbols in HELO
 hosts           = !127.0.0.1 : !localhost : !+relay_from_hosts : *

deny condition   = ${if match{$sender_address}{\N^\s+$\N}{yes}{no}}
 hosts           = !127.0.0.1 : !localhost : !+relay_from_hosts : *
 message         = А какого HELO пустое (тока пробелы)?! Не по RFC...
 log_message     = Пробелы в HELO

deny message     = REJECT: Your hostname is bad (adsl, poll, ppp & etc).
 condition       = ${if match{$sender_host_name}{adsl|dialup|pool|peer|dhcp}{yes}{no}}
 log_message     = REJECT: Connect with adsl:dialup:pool:peer:dhcp.

deny      log_message   = Отправитель неправильный
          !authenticated = *
          !verify       = sender/callout=20s,defer_ok,maxwait=30s

deny message     = "You in blacklist - $dnslist_domain $dnslist_text; $dnslist_value"
 hosts           = !+relay_from_hosts
 dnslists        = zen.spamhaus.org : bl.spamcop.net : bad.psky.me

defer message    = Greylisting in action, try later
 log_message     = Greylisted.
 !senders        = : *@tentorium.ru : *@tentorium.biz : *@lists.tentorium.ru : *@gmail.com : *@mail.ru : *@inbox.ru : *@bk.ru : *@list.ru  : *@rambler.ru : *@yandex.ru : *@lists.tentorium.ru
 !hosts          = ${if exists{/etc/greylistd/whitelist-hosts}\
                    {/etc/greylistd/whitelist-hosts}{}} : \
                   ${if exists{/var/lib/greylistd/whitelist-hosts}\
                    {/var/lib/greylistd/whitelist-hosts}{}}
 condition       = ${readsocket{/var/run/greylistd/socket}\
                    {--grey $sender_host_address $sender_address $local_part@$domain}\
                    {5s}{}{false}}

accept hosts     = +relay_from_hosts
accept domains   = +relay_to_domains
endpass
message = User not found
verify = recipient/callout=5s

deny message     = Access deny - this not open relay!
 log_message     = REJECT: We arent an open relay

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Exim 4.80 + Exchange 2013 СПАМ на несуществующий ящик

Непрочитанное сообщение xM » 2016-05-21 17:21:14

Demonik писал(а):Вот только АСЛ без коментов, сделал как сказали, логина ясна но нерабоатет
Трассируйте. Будет понятно что именно не работает.

Отправлено спустя 10 минут 20 секунд:
Могу предположить лишь что при проверке у вас сработало это правило раньше

Код: Выделить всё

accept hosts     = +relay_from_hosts
Поставьте его ниже перед финальным deny
IT voodoo blog https://kostikov.co

Demonik
рядовой
Сообщения: 17
Зарегистрирован: 2016-05-04 12:55:15

Exim 4.80 + Exchange 2013 СПАМ на несуществующий ящик

Непрочитанное сообщение Demonik » 2016-05-21 21:43:30

Сделал как Вы сказали. Шлюз все равно отправляет письмо на Эксчейндж, а тот его уже отлупливает. Никак не получается сделать эту проверку на Экзиме. Вот что пишется в трассировке правил.

Код: Выделить всё

23:38:56 17521 processing "deny"
23:38:56 17521 check verify = recipient/callout=2m,defer_ok,use_sender
23:38:56 17521 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
23:38:56 17521 Verifying duev@tentorium.ru
23:38:56 17521 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
23:38:56 17521 Considering duev@tentorium.ru
23:38:56 17521 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
23:38:56 17521 routing duev@tentorium.ru
23:38:56 17521 --------> exchange_router router <--------
23:38:56 17521 local_part=duev domain=tentorium.ru

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Exim 4.80 + Exchange 2013 СПАМ на несуществующий ящик

Непрочитанное сообщение xM » 2016-05-21 21:47:14

Ну вопрос к Exchange тогда, раз он заворачивает.
IT voodoo blog https://kostikov.co

Demonik
рядовой
Сообщения: 17
Зарегистрирован: 2016-05-04 12:55:15

Exim 4.80 + Exchange 2013 СПАМ на несуществующий ящик

Непрочитанное сообщение Demonik » 2016-05-21 21:57:21

Дело в том, что!!!
Я пишу с гугла письмо на несуществующий адрес в свой домен. Экзим его спокойно пропускает, хотя должен я так понимаю делать проверку в эксчейндж, далее писмо приходит на эксчейндж и он отсылает обратно гуглу что такого реципиента нет. А я бы хотел чтоб эту проверку делал Экзим, и слал ответку о непарвильно реципиенте прямо шлюз - экзим, чтоб письмо не слалось на эксчейндж.

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Exim 4.80 + Exchange 2013 СПАМ на несуществующий ящик

Непрочитанное сообщение xM » 2016-05-21 22:09:06

Если verify = recipient/callout даёт негативную проверку, то ответит Exim с сообщением "User not found".
Смотрите что вам выдаёт Exchange в ответ.
Судя по куску лога правило выдаёт deny но не вижу вывода дальше.
IT voodoo blog https://kostikov.co

Demonik
рядовой
Сообщения: 17
Зарегистрирован: 2016-05-04 12:55:15

Exim 4.80 + Exchange 2013 СПАМ на несуществующий ящик

Непрочитанное сообщение Demonik » 2016-05-21 22:57:04

Вот, ещё раз попробывал с другим правилом. НА сколько я понял посылается запрос на эксчейндж и там строка есть что адрес найден. Хотя такого адреса точно нет, или я не прав?

Код: Выделить всё

00:54:11 21253 processing "deny"
00:54:11 21253 check !verify = recipient/callout=20s,defer_ok,maxwait=30s
00:54:11 21253 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
00:54:11 21253 Verifying fdsjkfgjskgj@tentorium.ru
00:54:11 21253 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
00:54:11 21253 Considering fdsjkfgjskgj@tentorium.ru
00:54:11 21253 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
00:54:11 21253 routing fdsjkfgjskgj@tentorium.ru
00:54:11 21253 --------> exchange_router router <--------
00:54:11 21253 local_part=fdsjkfgjskgj domain=tentorium.ru
00:54:11 21253 checking domains
00:54:11 21253 tentorium.ru in "tentorium.biz : tentorium.ru"? yes (matched "tentorium.ru")
00:54:11 21253 calling exchange_router router
00:54:11 21253 exchange_router router called for fdsjkfgjskgj@tentorium.ru
00:54:11 21253   domain = tentorium.ru
00:54:11 21253 route_item = * vmail.tentorium.ru
00:54:11 21253 tentorium.ru in "*"? yes (matched "*")
00:54:11 21253 original list of hosts = "vmail.tentorium.ru" options =
00:54:11 21253 expanded list of hosts = "vmail.tentorium.ru" options =
00:54:11 21253 finding IP address for vmail.tentorium.ru
00:54:11 21253 doing DNS lookup
00:54:11 21253 DNS lookup of vmail.tentorium.ru (A) succeeded
00:54:11 21253 fully qualified name = vmail.tentorium.ru
00:54:11 21253 autodiscover.tentorium.ru 195.128.133.109 mx=-1 sort=-20
00:54:11 21253 queued for remote_smtp transport: local_part = fdsjkfgjskgj
00:54:11 21253 domain = tentorium.ru
00:54:11 21253   errors_to=NULL
00:54:11 21253   domain_data=NULL localpart_data=NULL
00:54:11 21253 routed by exchange_router router
00:54:11 21253   envelope to: fdsjkfgjskgj@tentorium.ru
00:54:11 21253   transport: remote_smtp
00:54:11 21253   host autodiscover.tentorium.ru [195.128.133.109]
00:54:11 21253 Attempting full verification using callout
00:54:11 21253 locking /var/spool/exim4/db/callout.lockfile
00:54:11 21253 locked /var/spool/exim4/db/callout.lockfile
00:54:11 21253 EXIM_DBOPEN(/var/spool/exim4/db/callout)
00:54:11 21253 returned from EXIM_DBOPEN
00:54:11 21253 opened hints database /var/spool/exim4/db/callout: flags=O_RDWR
00:54:11 21253 dbfn_read: key=tentorium.ru
00:54:11 21253 callout cache: found domain record
00:54:11 21253 dbfn_read: key=fdsjkfgjskgj@tentorium.ru
00:54:11 21253 callout cache: found address record
00:54:11 21253 callout cache: address record is positive
00:54:11 21253 ----------- end verify ------------
00:54:11 21253 deny: condition test failed in ACL "acl_check_rcpt"

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Exim 4.80 + Exchange 2013 СПАМ на несуществующий ящик

Непрочитанное сообщение xM » 2016-05-21 23:09:24

Тут видно, что он у вас отвечает callout cache: address record is positive, но это должно быть видно и в обычном логе Exim.
Например, Gmail отвечает что-то вроде

Код: Выделить всё

May 21 18:14:53 beta exim[24793]: H=eaglely-vigor.volia.net [93.72.105.129] I=[1.1.1.1]:25 F=<crampingpn63@inbox.ru> rejected RCPT <somebody@somewhere.ru>: response to "RCPT TO:<somebody@somewhere.ru>" from aspmx.l.google.com [74.125.136.26] was: 550-5.1.1 The email account that you tried to reach does not exist. Please try\n550-5.1.1 double-checking the recipient's email address for typos or\n550-5.1.1 unnecessary spaces. Learn more at\n550 5.1.1  https://support.google.com/mail/answer/6596 d83si4539528wmf.53 - gsmtp
May 21 18:14:53 beta exim[24793]: H=eaglely-vigor.volia.net [93.72.105.129] I=[1.1.1.1]:25 F=<crampingpn63@inbox.ru> rejected RCPT <somebody@somewhere.ru>: User not found
и далее, как видно, Exim отшивает отправителя.
IT voodoo blog https://kostikov.co

Demonik
рядовой
Сообщения: 17
Зарегистрирован: 2016-05-04 12:55:15

Exim 4.80 + Exchange 2013 СПАМ на несуществующий ящик

Непрочитанное сообщение Demonik » 2016-05-21 23:13:59

У меня ситуевина как у товарища вот тут http://danil625.livejournal.com/13865.html , может быть просто Эксчейнж не настроен отвечать по SMTP на проверки!? Попробую поковырять, но его так опасно ковырять - этот МС эксчейндж.

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Exim 4.80 + Exchange 2013 СПАМ на несуществующий ящик

Непрочитанное сообщение xM » 2016-05-21 23:25:29

Да, вполне возможно. Об этом я и писал выше, что надо смотреть именно Exchange.

Отправлено спустя 8 минут 43 секунды:
В крайнем случае, если не удастся решить этот вопрос нормальным способом, то вы всегда можете проверять пользователя используя LDAP.
Но это, конечно, костыль.
IT voodoo blog https://kostikov.co

Demonik
рядовой
Сообщения: 17
Зарегистрирован: 2016-05-04 12:55:15

Exim 4.80 + Exchange 2013 СПАМ на несуществующий ящик

Непрочитанное сообщение Demonik » 2016-05-21 23:29:20

Спасибо за уделенное время, решу проблему - отпишу как решил. Многое для себя прояснил с экзимом!!!

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Exim 4.80 + Exchange 2013 СПАМ на несуществующий ящик

Непрочитанное сообщение xM » 2016-05-21 23:32:15

см. http://www.lissyara.su/articles/freebsd ... +exchange/
Если установлен Exchange 2003 (лучше всего с SP2 - там это точно есть), то у него есть встроенные механизмы проверки "rcpt to". Для этого необходимов в иксченджовой консоли поставить 2 галки: а) запускаем System Manager, открываем Administrative Groups - Servers - <имя вашего иксченджа> - Protocols - SMTP - Default SMTP Virtual Server - Properties - Advanced - Edit, ставим галку Apply Recipient filter, закрываем и идем б) Global Settings - Message Delivery - Properties - закладка Recepients Filtering, ставим галку Filter Recipients who are not in the directory. В результате при попытке заспамить на несуществующие адреса Иксчендж ответит - 550 5.1.1 User unknown.
8)
IT voodoo blog https://kostikov.co

Demonik
рядовой
Сообщения: 17
Зарегистрирован: 2016-05-04 12:55:15

Exim 4.80 + Exchange 2013 СПАМ на несуществующий ящик

Непрочитанное сообщение Demonik » 2016-05-25 13:22:51

Сделал в общем так, работает. Шлюз сам опрашивает эксчейндж, но как я не понимаю, потмоу что все работает без правила verify = recipient/callout=5s.
Делал по следующей схеме. (exchange 2013) и (Exim 4.80).
Работаем в Exchange Management Shell
1. Смотрим транспорты

Код: Выделить всё

Get-TransportAgent
2. Включаем, если не включен nhfycgjhn "Recipient Filter Agent"

Код: Выделить всё

Enable-TransportAgent "Recipient Filter Agent"
3. Перезагружаем службу транспорта Exchange либо сервер(если не критично)
4. Смотрим какие адресные книги и для какого домена включены для проверки доступности получателя

Код: Выделить всё

Get-AcceptedDomain | Format-List Name,AddressBookEnabled
5. Включаем адресную книгу, если не включена

Код: Выделить всё

Set-AcceptedDomain <name of accepted domain> -AddressBookEnabled $true
6. Смотрим чтоб была включена опция "RecipientValidationEnabled" в фильтре RecipientFilterConfig

Код: Выделить всё

Get-RecipientFilterConfig | FL Enabled,RecipientValidationEnabled 
Должно быть так:

Код: Выделить всё

Enabled : True
RecipientValidationEnabled : False
Если нет, то включаем:

Код: Выделить всё

Set-RecipientFilterConfig -RecipientValidationEnabled $true
7. Перезагружаем службу транспорта Exchange либо сервер(если не критично)

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

Exim 4.80 + Exchange 2013 СПАМ на несуществующий ящик

Непрочитанное сообщение xM » 2016-05-25 13:41:33

Demonik писал(а): verify = recipient/callout=5s
Ну так он просто проходит все ACL и пытается доставить и, соответственно, отшивает в роутере / транспорте.
verify = sender же в acl_check_rcpt позволяет зря не напрягать систему ненужными проверками далее.
IT voodoo blog https://kostikov.co