exim и левые письма

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
buryanov
ст. сержант
Сообщения: 311
Зарегистрирован: 2008-04-29 13:41:48
Откуда: Харьков
Контактная информация:

exim и левые письма

Непрочитанное сообщение buryanov » 2009-02-12 11:41:37

Hi All
Настроил почтовый релей по статье exim+exchange - http://www.lissyara.su/?id=1453, до этого этот сервер неимел внешнего dns, но всегда был с белым IP. Буквально через пару часов стал замечать в очереди левые письма, в частности сегодня:

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

 5.5K 1LXU9f-000Gwk-Iw <>
          hardinessg0@caleffi.ru
в логе:

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

Feb 12 07:29:48 asterisk exim[64890]: [64890] no IP address found for host hn.kd.ny.adsl (during SMTP connection from (hn.kd.ny.adsl) [125.42.67.197]:1160 I=[80.249.231.163]:25)
Feb 12 07:29:48 asterisk exim[64890]: [64890] STAGE6: ACL m0 set = 70 for host= [125.42.67.197] with HELO=hn.kd.ny.adsl - many big sender address [hardinessg0@caleffi.ru]
Feb 12 07:29:48 asterisk exim[64890]: [64890] "STAGE10: ACL m0 set = 130 for host= [125.42.67.197] with HELO=hn.kd.ny.adsl - dialup, ppp & etc..."
Feb 12 07:29:48 asterisk exim[64890]: [64890] non-existent domain in HELO - 'hn.kd.ny.adsl' setting acl_m0 = 280
Feb 12 07:29:48 asterisk exim[64890]: [64890] Delay 28s (spam counter = 280; white host = 0) for  [125.42.67.197] with HELO=hn.kd.ny.adsl. Mail from hardinessg0@caleffi.ru to infonn@telesens.ru.
Feb 12 07:30:21 asterisk exim[64890]: [64890] 1LXU9R-000Gsc-Jp <= hardinessg0@caleffi.ru H=(hn.kd.ny.adsl) [125.42.67.197]:1160 I=[80.249.231.163]:25 P=esmtp S=4618 id=029655504.96709832255707@caleffi.ru T="\363e\322\311\301\314\331 - \304e\333\305\327\314\305 \316e \316a\312\324\311" from <hardinessg0@caleffi.ru> for infonn@telesens.ru
Feb 12 07:30:31 asterisk exim[65121]: [65121] 1LXU9R-000Gsc-Jp ** infonn@telesens.ru F=<hardinessg0@caleffi.ru> P=<hardinessg0@caleffi.ru> R=exchange_router T=remote_smtp: SMTP error from remote mail server after RCPT TO:<infonn@telesens.ru>: host 10.4.2.86 [10.4.2.86]: 550 5.1.1 User unknown
Feb 12 07:30:31 asterisk exim[65146]: [65146] 1LXU9f-000Gwk-Iw <= <> R=1LXU9R-000Gsc-Jp U=mailnull P=local S=5665 T="Mail delivery failed: returning message to sender" from <> for hardinessg0@caleffi.ru
Feb 12 07:30:40 asterisk exim[65149]: [65149] 1LXU9f-000Gwk-Iw SMTP error from remote mail server after RCPT TO:<hardinessg0@caleffi.ru>: host mxs.valuehost.ru [217.112.42.22]: 450 4.7.1 Client host rejected: cannot find your hostname, [80.249.231.163]
Дмитрий.
buryanov*ukr.net
icq# 118639660; skype: buryanov

Хостинговая компания 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/

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: exim и левые письма

Непрочитанное сообщение dikens3 » 2009-02-12 12:06:13

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

infonn@telesens.ru.
Это твой домен и адрес?

Письмо дошло до роутера, а пользователь не существует.. Отправляется рикошет.. Не очень давно, не более месяца наверно лис (по моему он) выкладывал решение чтобы от <> письма вообще не отправлялись никуда... Можешь так поступить, а можешь проверку пользователей сделать в твоём Exchange и отфутболивать не принимая письмо(рикошетов не будет)
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
buryanov
ст. сержант
Сообщения: 311
Зарегистрирован: 2008-04-29 13:41:48
Откуда: Харьков
Контактная информация:

Re: exim и левые письма

Непрочитанное сообщение buryanov » 2009-02-12 17:07:40

Мой домен telesens.ru, а ящика infonn не существует. Также сервер обслужует telesens.com.ua, telesens.ua, hq.telesens.lan(внетрений домен, почтой не обслуживается). чтото никак немогу прикрутить его е exchange
Дмитрий.
buryanov*ukr.net
icq# 118639660; skype: buryanov

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: exim и левые письма

Непрочитанное сообщение dikens3 » 2009-02-13 0:16:14

Покажи конфиг (секцию роутеров).

В 2-х словах:
У тебя не должно приниматься письмо для пересылки на Exchange, если там такого пользователя несуществует. (Нужен соответствующий роутер или дополнение проверки существования в уже существующий роутер, который перенаправляет на транспорт к Exchange)
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
buryanov
ст. сержант
Сообщения: 311
Зарегистрирован: 2008-04-29 13:41:48
Откуда: Харьков
Контактная информация:

Re: exim и левые письма

Непрочитанное сообщение buryanov » 2009-02-13 11:43:33

Я посидел и повылавливал письма tcpdump и понял, что Exim на Exchange их просто нешлёт и скорее всего поэтому у меня появилась эта проблема. Поскольку осковной почтовый шлюз меня другой, а этот был собран неделю назад и сейчас находится в состоянии тестирования и отладка и домен telesens.ru у нас не основной, то недоставка почты сразу замечена небыла. Я чтото изменил в конфигурации и exim перестал слать почту, но пока найти немогу. Раньше мой exchange возвращал

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

User Unknown

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

# умный роутер - шлём почту на внутренний эксчейндж (10.4.2.86)
exchange_router:
	driver		=	"manualroute"
	domains		=	MS_EXCHANGE_DOMAIN
#	domains		=	+relay_to_domains
#	data		=	$local_part
	transport	=	remote_smtp
	route_list	=	* 10.4.2.86
	no_more
Псокольку мне перезапись ненужна, то

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

# роутер для преобразования адресов из внешних во внутренние
#conversion_router:
#	driver		=	redirect
#	data		=	$local_part@MS_EXCHANGE_DOMAIN
#	data		=	$local_part
#	data		=	${lookup ldap {LDAP_AD_MAIL_RCPT}}
#	user		=	mailnull
#	group		=	mail
#	domains		=	+relay_to_domains
у меня полностью закаменчен.
Вроде больше ничего не трогал. Буду искать дальше.
Лог при доставке письма buryanov@ukr.net -> d.buryanov@telesens.ru

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

Feb 13 10:48:18 asterisk exim[82535]: [82535] STAGE6: ACL m0 set = 10 for host=ffe13.ukr.net [195.214.192.5] with HELO=ffe13.ukr.net - many big sender address [buryanov@ukr.net]
Feb 13 10:48:18 asterisk exim[82535]: [82535] Delay 15s (spam counter = 10; white host = 0) for ffe13.ukr.net [195.214.192.5] with HELO=ffe13.ukr.net. Mail from buryanov@ukr.net to d.buryanov@telesens.ru.
Feb 13 10:48:34 asterisk exim[82535]: [82535] 1LXtis-000LTD-1y <= buryanov@ukr.net H=ffe13.ukr.net [195.214.192.5]:60927 I=[80.249.231.163]:25 P=esmtp S=1712 id=E1LXtiW-000729-Bm@ffe13.ukr.net T="cvcvcvcvcv" from <buryanov@ukr.net> for d.buryanov@telesens.ru
Feb 13 10:48:34 asterisk exim[82536]: [82536] 1LXtis-000LTD-1y == d.buryanov@telesens.ru R=exchange_router T=remote_smtp defer (-53): retry time not reached for any host
Дмитрий.
buryanov*ukr.net
icq# 118639660; skype: buryanov

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: exim и левые письма

Непрочитанное сообщение dikens3 » 2009-02-13 11:59:10

Ещё раз объясняю на пальцах.

Что имеем:
1. Exim
2. Echange

Что должно быть и как это должно работать в нормальных условиях:
Письмо сначала идёт на exim, где должно перенаправиться на exchange.

Пошагово должно быть так:
1. Происходит соединение с твоим сервером Exim.
2. Ему передаётся письмо на адрес user@MS_EXCHANGE_DOMAIN.
3. Твой exim проверяет существования пользователя user@MS_EXCHANGE_DOMAIN.
4. Если пользователь существует, тогда exim принимает письмо для последующей пересылки на Exchange.
5. Если пользователь не существует, происходит отлуп.

Что есть:
1. Происходит соединение с твоим сервером Exim.
2. Ему передаётся письмо на адрес user@MS_EXCHANGE_DOMAIN.
3. Твой exim принимает письмо для последующей пересылки на Exchange и кладёт в очередь.
4. При отправке на Exchange происходит отлуп, т.к.:

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

Feb 12 07:30:31 asterisk exim[65121]: [65121] 1LXU9R-000Gsc-Jp ** infonn@telesens.ru F=<hardinessg0@caleffi.ru> P=<hardinessg0@caleffi.ru> R=exchange_router T=remote_smtp: SMTP error from remote mail server after RCPT TO:<infonn@telesens.ru>: host 10.4.2.86 [10.4.2.86]: 550 5.1.1 User unknown
Или по-простому Exchange отказывается принимать письмо, т.к. такого пользователя у него нет.
5. Exim генерирует сообщение о невозможности доставить почту на адрес user@MS_EXCHANGE_DOMAIN.
6. Твоё сообщение лежит в очереди, что ты и наблюдаешь. Т.к. адресат может быть поддельным (В том смысле, что нельзя соединиться с сервером к примеру), письмо может лежать в очереди достаточно долго.



У тебя один домен или несколько?

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

# Очень умный роутер - шлём почту на внутренний эксчейндж (10.4.2.86)
exchange_router:
   driver      =   "manualroute"
   domains      =   MS_EXCHANGE_DOMAIN
   local_parts = проверка существования пользователя в exchange - это можно использовать когда все пользователи в одном домене.
   condition = проверка существования пользователя в exchange - если много доменов.
   transport   =   remote_smtp
   route_list   =   * 10.4.2.86
   no_more
Вобщем роутер не должен срабатывать, если пользователя в exchange не существует, что достигается за счёт проверки.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
buryanov
ст. сержант
Сообщения: 311
Зарегистрирован: 2008-04-29 13:41:48
Откуда: Харьков
Контактная информация:

Re: exim и левые письма

Непрочитанное сообщение buryanov » 2009-02-13 12:22:10

Я сижу читаю форумы и мне пришли все письма, которые я отправлял сам себе(с укрнета). У меня запущен на консоли tcpdump -i re0 dst port 25 host 10.4.2.86 и двое суток небыло никакой активности, а тут вдруг вся почта пошла
Дмитрий.
buryanov*ukr.net
icq# 118639660; skype: buryanov

Гость
проходил мимо

Re: exim и левые письма

Непрочитанное сообщение Гость » 2009-04-07 17:28:05

dikens3 писал(а): Не очень давно, не более месяца наверно лис (по моему он) выкладывал решение чтобы от <> письма вообще не отправлялись никуда...
Не смог найти, сколько не искал. Не подскажите, как это сделать?

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35437
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: exim и левые письма

Непрочитанное сообщение Alex Keda » 2009-04-07 19:50:07

Гость писал(а):
dikens3 писал(а): Не очень давно, не более месяца наверно лис (по моему он) выкладывал решение чтобы от <> письма вообще не отправлялись никуда...
Не смог найти, сколько не искал. Не подскажите, как это сделать?
а что именно вам нужно?
Убей их всех! Бог потом рассортирует...

Гость
проходил мимо

Re: exim и левые письма

Непрочитанное сообщение Гость » 2009-04-08 0:30:21

Я же процитировал "решение чтобы от <> письма вообще не отправлялись никуда..."

Т.е. хочу, чтобы **С** моего сервера не было отправок типа

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

1Lqu3M-000JMN-IC <= <> R=1Lqu3C-000JLy-EE U=mail P=local S=739 T="Mail delivery failed: returning message to sender" from <> for mail@domain.com
Последний раз редактировалось Alex Keda 2009-04-08 21:00:07, всего редактировалось 1 раз.
Причина: Товарищщи, юзайте кнопочку [code], цените чужое время...

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35437
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: exim и левые письма

Непрочитанное сообщение Alex Keda » 2009-04-08 20:59:55

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

bounce_to_null:
        driver          = redirect
        condition       = ${if eq{$sender_address}{}{yes}{no}}
        user            = mailnull
        group           = mail
        file_transport  = address_file
        pipe_transport  = address_pipe
        data            = null@hosting.lissyara.su
        domains         = ! +local_domains
сообщения нормально оформляйте
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35437
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: exim и левые письма

Непрочитанное сообщение Alex Keda » 2009-04-08 21:01:39

роутер поправить догадаетесь?
мне этого говна на сервере не надо =)))
своего хватает =))
=======
ещё в конфиге нашёл - мож кому пригодиться - чтоб автоответы не ходили вообще:

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

# автоответы достали. X-AutoReply
drop_autoreply:
        driver          = accept
        condition       = "${if match{$h_X-AutoReply:}{@} {1}{0}}"
        transport       = null_transport
Убей их всех! Бог потом рассортирует...

Гость
проходил мимо

Re: exim и левые письма

Непрочитанное сообщение Гость » 2009-04-09 1:29:07

не работает конструкция bounce_to_null

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35437
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: exim и левые письма

Непрочитанное сообщение Alex Keda » 2009-04-11 22:46:19

Гость писал(а):не работает конструкция bounce_to_null
та? =)
а у меня работает.
правда, у меня ещё и логи есть, у вас, видимо, нету =)))
Убей их всех! Бог потом рассортирует...

Гость
проходил мимо

Re: exim и левые письма

Непрочитанное сообщение Гость » 2009-04-11 22:59:25

Подколку понял, но если я написал "не работает", значит можно догадаться, что в логах все тоже самое будет. ;) А лог был приведен выше
Все точно также и осталось. Письма-отлупы с from <> уходят с моего сервера, как и раньше.

Честно говоря, я не вижу (или просто не понимаю), почему указанная конструкция их должна не отпускать наружу.

Можете построчно растолковать? Может тогда станет ясно, что нужно изменить в ней.

Или может мы все еще говорим о разных целях?
Повторюсь, что я хочу, чтобы мой сервер все отлупы отправлял в небытие, а не отправителю, так как в качестве отправителя может быть указан адрес совсем невинной жертвы и отлуп будет расценен как спам. Логи говорят, что все такие отлупы имеют пустой from а значит задача сводится к тому, чтобы в dev/null отправлять все, что имеет from <>. Код такого письма был выше.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35437
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: exim и левые письма

Непрочитанное сообщение Alex Keda » 2009-04-12 13:20:54

ну у меня же с ним не уходят никуда =))
показывайте конфигурацию роутеров
Убей их всех! Бог потом рассортирует...

Гость
проходил мимо

Re: exim и левые письма

Непрочитанное сообщение Гость » 2009-04-15 1:41:30

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


.....

######################################################################
#                      ROUTERS CONFIGURATION                         #
#            Specifies how remote addresses are handled              #
######################################################################
#                          ORDER DOES MATTER                         #
#  A remote address is passed to each in turn until it is accepted.  #
######################################################################

begin routers

# Remote addresses are those with a domain that does not match any item
# in the "local_domains" setting above.

# This router routes to remote hosts over SMTP using a DNS lookup. Any domain
# that resolves to an IP address on the loopback interface (127.0.0.0/8) is
# treated as if it had no DNS entry.

lookuphost:
  driver = dnslookup
  domains = ! +local_domains
  ignore_target_hosts = 127.0.0.0/8
  condition = "${perl{check_limits}}"
  transport = remote_smtp
  no_more

# This router routes to remote hosts over SMTP by explicit IP address,
# when an email address is given in "domain literal" form, for example,
# <user@[192.168.35.64]>. The RFCs require this facility. However, it is
# little-known these days, and has been exploited by evil people seeking
# to abuse SMTP relays. Consequently it is commented out in the default
# configuration. If you uncomment this router, you also need to comment out
# "forbid_domain_literals" above, so that Exim can recognize the syntax of
# domain literal addresses.

# domain_literal:
#   driver = ipliteral
#   transport = remote_smtp

######################################################################
#                      DIRECTORS CONFIGURATION                       #
#             Specifies how local addresses are handled              #
######################################################################
#                          ORDER DOES MATTER                         #
#   A local address is passed to each in turn until it is accepted.  #
######################################################################

# Local addresses are those with a domain that matches some item in the
# "local_domains" setting above, or those which are passed back from the
# routers because of a "self=local" setting (not used in this configuration).

# Spam Assassin
spamcheck_director:
  driver = accept
  condition = "${if and { \
                     {!def:h_X-Spam-Flag:} \
                     {!eq {$received_protocol}{spam-scanned}} \
                     {!eq {$received_protocol}{local}} \
  retry_use_local_part
  transport = spamcheck
  no_verify

majordomo_aliases:
  driver = redirect
  allow_defer
  allow_fail
  data = ${if exists{/etc/virtual/${domain}/majordomo/list.aliases}{${lookup{$local_part}lsearch{/etc/virtual/${domain}/majordomo/list.aliases}}}}
  domains = lsearch;/etc/virtual/domainowners
  file_transport = address_file
  group = daemon
  pipe_transport = majordomo_pipe
  retry_use_local_part
  no_rewrite
  user = majordomo

majordomo_private:
  driver = redirect
  allow_defer
  allow_fail
  #condition = "${if eq {$received_protocol} {local} {true} {false} }"
  condition = "${if or { {eq {$received_protocol} {local}} \
                         {eq {$received_protocol} {spam-scanned}} } {true} {false} }"
  data = ${if exists{/etc/virtual/${domain}/majordomo/private.aliases}{${lookup{$local_part}lsearch{/etc/virtual/${domain}/majordomo/private.aliases}}}}
  domains = lsearch;/etc/virtual/domainowners
  file_transport = address_file
  group = daemon
  pipe_transport = majordomo_pipe
  retry_use_local_part
  user = majordomo

domain_filter:
  driver = redirect
  allow_filter
  no_check_local_user
  condition = "${if exists{/etc/virtual/${domain}/filter}{yes}{no}}"
  user = "mail"
  file = /etc/virtual/${domain}/filter
  directory_transport = address_file
  pipe_transport = virtual_address_pipe
  retry_use_local_part
  no_verify

uservacation:
   driver = accept
   condition = ${lookup{$local_part} lsearch {/etc/virtual/${domain}/vacation.conf}{yes}{no}}
   require_files = /etc/virtual/${domain}/reply/${local_part}.msg
   transport = uservacation
   unseen

userautoreply:
   driver = accept
   condition = ${lookup{$local_part} lsearch {/etc/virtual/${domain}/autoresponder.conf}{yes}{no}}
   require_files = /etc/virtual/${domain}/reply/${local_part}.msg
   transport = userautoreply
   unseen

virtual_aliases_nostar:
  driver = redirect
  allow_defer
  allow_fail
  data = ${if exists{/etc/virtual/${domain}/aliases}{${lookup{$local_part}lsearch{/etc/virtual/${domain}/aliases}}}}
  file_transport = address_file
  group = mail
  pipe_transport = virtual_address_pipe
  retry_use_local_part
  unseen
  #include_domain = true

virtual_user:
  driver = accept
  condition = ${if eq {}{${if exists{/etc/virtual/${domain}/passwd}{${lookup{$local_part}lsearch{/etc/virtual/${domain}/passwd}}}}}{no}{yes}}
  domains = lsearch;/etc/virtual/domainowners
  group = mail
  retry_use_local_part
  transport = virtual_localdelivery

virtual_aliases:
  driver = redirect
  allow_defer
  allow_fail
  data = ${if exists{/etc/virtual/$domain/aliases}{${lookup{$local_part}lsearch*{/etc/virtual/$domain/aliases}}}}
  file_transport = address_file
  group = mail
  pipe_transport = virtual_address_pipe
  retry_use_local_part
  #include_domain = true

# This director handles forwarding using traditional .forward files.
# If you want it also to allow mail filtering when a forward file
# starts with the string "# Exim filter", uncomment the "filter" option.
# The check_ancestor option means that if the forward file generates an
# address that is an ancestor of the current one, the current one gets
# passed on instead. This covers the case where A is aliased to B and B
# has a .forward file pointing to A. The three transports specified at the
# end are those that are used when forwarding generates a direct delivery
# to a file, or to a pipe, or sets up an auto-reply, respectively.

userforward:
  driver = redirect
  allow_filter
  check_ancestor
  check_local_user
  no_expn
  file = $home/.forward
  file_transport = address_file
  pipe_transport = address_pipe
  reply_transport = address_reply
  no_verify

system_aliases:
  driver = redirect
  allow_defer
  allow_fail
  data = ${lookup{$local_part}lsearch{/etc/aliases}}
  file_transport = address_file
  pipe_transport = address_pipe
  retry_use_local_part
  # user = exim

localuser:
  driver = accept
  check_local_user
  condition = "${if eq {$domain} {$primary_hostname} {yes} {no}}"
  transport = local_delivery

# This director matches local user mailboxes.

######################################################################
#                      TRANSPORTS CONFIGURATION                      #
######################################################################
#                       ORDER DOES NOT MATTER                        #
#     Only one appropriate transport is called for each delivery.    #
######################################################################

# A transport is used only when referenced from a director or a router that
# successfully handles an address.


# Spam Assassin
begin transports

spamcheck:
  driver = pipe
  batch_max = 100
  command = /usr/sbin/exim -oMr spam-scanned -bS
  current_directory = "/tmp"
  group = mail
  home_directory = "/tmp"
  log_output
  message_prefix =
  message_suffix =
  return_fail_output
  no_return_path_add
  transport_filter = /usr/bin/spamc -u ${lookup{$domain}lsearch*{/etc/virtual/domainowners}{$value}}
  use_bsmtp
  user = mail
  # must use a privileged user to set $received_protocol on the way back in!


#majordomo
majordomo_pipe:
  driver = pipe
  group = daemon
  return_fail_output
  user = majordomo

# This transport is used for local delivery to user mailboxes in traditional
# BSD mailbox format. By default it will be run under the uid and gid of the
# local user, and requires the sticky bit to be set on the /var/mail directory.
# Some systems use the alternative approach of running mail deliveries under a
# particular group instead of using the sticky bit. The commented options below
# show how this can be done.

local_delivery:
  driver = appendfile
  delivery_date_add
  envelope_to_add
  directory = /home/$local_part/Maildir/
  directory_mode = 770
  create_directory = true
  maildir_format
  group = mail
  mode = 0660
  return_path_add
  user = ${local_part}

## for delivering virtual domains to their own mail spool

virtual_localdelivery:
  driver = appendfile
  create_directory
  delivery_date_add
  directory_mode = 770
  envelope_to_add
  directory = /home/${lookup{$domain}lsearch*{/etc/virtual/domainowners}{$value}}/imap/${domain}/${local_part}/Maildir
  maildir_format
  group = mail
  mode = 660
  return_path_add
  user = "${lookup{$domain}lsearch*{/etc/virtual/domainowners}{$value}}"
  quota = ${if exists{/etc/virtual/${domain}/quota}{${lookup{$local_part}lsearch*{/etc/virtual/${domain}/quota}{$value}{0}}}{0}}

## vacation transport
uservacation:
  driver = autoreply
  file = /etc/virtual/${domain}/reply/${local_part}.msg
  from = "${local_part}@${domain}"
  log = /etc/virtual/${domain}/reply/${local_part}.log
  no_return_message
  subject = "${if def:h_Subject: {Autoreply: ${quote:${escape:$h_Subject:}}} {I am on vacation}}"
  text = "\
        ------                                                           ------\n\n\
        This message was automatically generated by email software\n\
        The delivery of your message has not been affected.\n\n\
        ------                                                           ------\n\n"
  to = "${sender_address}"
  user = mail
        #once = /etc/virtual/${domain}/reply/${local_part}.once

userautoreply:
  driver = autoreply
  bcc = ${lookup{${local_part}} lsearch {/etc/virtual/${domain}/autoresponder.conf}{$value}}
  file = /etc/virtual/${domain}/reply/${local_part}.msg
  from = "${local_part}@${domain}"
  log = /etc/virtual/${domain}/reply/${local_part}.log
  no_return_message
  subject = "${if def:h_Subject: {Autoreply: ${quote:${escape:$h_Subject:}}} {Autoreply Message}}"
  to = "${sender_address}"
  user = mail
  #once = /etc/virtual/${domain}/reply/${local_part}.once

# This transport is used for delivering messages over SMTP connections.

remote_smtp:
  driver = smtp

# This transport is used for handling pipe deliveries generated by alias
# or .forward files. If the pipe generates any standard output, it is returned
# to the sender of the message as a delivery error. Set return_fail_output
# instead of return_output if you want this to happen only when the pipe fails
# to complete normally. You can set different transports for aliases and
# forwards if you want to - see the references to address_pipe in the directors
# section below.

address_pipe:
  driver = pipe
  return_output

virtual_address_pipe:
  driver = pipe
  group = nobody
  return_output
  user = "${lookup{$domain}lsearch* {/etc/virtual/domainowners}{$value}}"

# This transport is used for handling deliveries directly to files that are
# generated by aliasing or forwarding.

address_file:
  driver = appendfile
  delivery_date_add
  envelope_to_add
  return_path_add

# This transport is used for handling autoreplies generated by the filtering
# option of the forwardfile director.

address_reply:
  driver = autoreply

######################################################################
#                      RETRY CONFIGURATION                           #
######################################################################

# This single retry rule applies to all domains and all errors. It specifies
# retries every 15 minutes for 2 hours, then increasing retry intervals,
# starting at 1 hour and increasing each time by a factor of 1.5, up to 16
# hours, then retries every 8 hours until 4 days have passed since the first
# failed delivery.

# Domain               Error       Retries
# ------               -----       -------


begin retry

*                      *           F,2h,15m; G,16h,1h,1.5; F,4d,8h


# End of Exim 4 configuration
[/size]

Аватара пользователя
FoxDW
мл. сержант
Сообщения: 106
Зарегистрирован: 2008-08-04 4:42:43
Откуда: Красноярск
Контактная информация:

Re: exim и левые письма

Непрочитанное сообщение FoxDW » 2009-04-15 5:05:56

lissyara писал(а):

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

bounce_to_null:
        driver          = redirect
        condition       = ${if eq{$sender_address}{}{yes}{no}}
        user            = mailnull
        group           = mail
        file_transport  = address_file
        pipe_transport  = address_pipe
        data            = null@hosting.lissyara.su
        domains         = ! +local_domains
сообщения нормально оформляйте
Если так сделать то получается все авто ответы рубятся ? Ведь если не спамер а нормальный пользователь ошибется адресом ему же уже не придет уведомление

есть какое то универсальное решение чтобы и спам зарубить и остальных не обделить ) ?
Вот как то так

Гость
проходил мимо

Re: exim и левые письма

Непрочитанное сообщение Гость » 2009-04-23 6:35:49

Больше советов не будет?
Вроде отправил все роутеры...

Nejasyth
рядовой
Сообщения: 14
Зарегистрирован: 2007-07-26 13:29:29
Откуда: Санкт-Петербург

Re: exim и левые письма

Непрочитанное сообщение Nejasyth » 2009-04-23 9:11:44

У меня работает с такими конфигами:
400.acl_check_rcpt_end.conf

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

 # Конец конфигурации проверки отправителя

# Сбрасываем спамерскую переменную, если домен в белом списке
  warn  condition       = ${if eq{$acl_m2}{1}{yes}{no}}
        logwrite        = Resetting acl_m0 $acl_m0 --> 0, host in whitelist \
                                ($sender_address ==> $local_part@$domain)
        set acl_m0      = 0

  warn
        # Вычисляем задержку на основании насчитанных за спам очков:
        condition       = ${if !eq{$acl_m0}{0}{yes}{no}}
        condition       = ${if >{$acl_m0}{150}{yes}{no}}
        set acl_c0      = ${eval:$acl_m0/10}s
  warn
        # ставим задержку в 0 секунд своим хостам
        hosts = +relay_from_hosts
        set acl_c0      = 0s
  warn
        # Ставим нулевую задержку хостам из белого листа
        condition       = ${if eq{$acl_m2}{1}{yes}{no}}
        set acl_c0      = 0s
  warn
        # пишем в логи задержку (если оно вам надо)
#       logwrite = Delay $acl_c0 (spam counter = $acl_m0; \
#white host = $acl_m2) for $sender_host_name \
#[$sender_host_address] with HELO=$sender_helo_name. Mail \
#from $sender_address to $local_part@$domain.
        delay           = $acl_c0


  # Рубаем тех, кто в блэк-листах. Серваки перебираются
  # сверху вниз, если не хост не найден на первом, то
  # запрашивается второй, и т.д. Если не найден ни в одном
  # из списка - то почта пропускается.
  deny  message         = "you in blacklist - $dnslist_domain --> \
                                $dnslist_text; $dnslist_value"
        hosts           = !+relay_from_hosts
        dnslists        = cbl.abuseat.org : \
                        dynablock.njabl.org : \
                        dul.dnsbl.sorbs.net : \
                        list.dsbl.org : \
                        zombie.dnsbl.sorbs.net : \
                        list.dsbl.org
#       delay           = 15s

# Отсекаем тех, у кого много очков спама
deny condition = ${if >{$acl_m0}{110}{yes}{no}}
   message = "Too many spam bonuses!"

#Проверка существования пользователя в Exchange
accept  domains       = +local_domains
          endpass
          message       = "Unknown user for this domain"
          verify        = recipient

accept  domains       = +relay_to_domains
          endpass
          message       = "No route to host ... $acl_verify_message"
          verify        = recipient


  # Если неподошло ни одно правило - чувак явно ищет
  # открытый релей. Пшёл прочь. :)
  deny          message = "Access deny - this is not open relay!"
                delay   = 30s
600.routers.conf

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

# Конфигурация роутеров

#DNSLOOKUP_ROUTER

dnslookup:
        driver          =       dnslookup
        domains         =       !+local_domains
        transport       =       remote_smtp
        ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
        no_more
# роутер для преобразования адресов из внешних во внутренние
conversion_router:
        driver          =       redirect
        data = ${lookup ldap {LDAP_AD_MAIL_RCPT}\
{${local_part}@${domain}}{:fail: User unknown}}
        allow_fail
        allow_defer
        user            =       mailnull
        group           =       mail
        domains         =       +relay_to_domains

redirect_router = exchange_router
# умный роутер - шлём почту на внутренний эксчейндж
exchange_router:
        driver          =       "manualroute"
#       domains         =       MS_EXCHANGE_DOMAIN
        domains         =       +relay_to_domains
#       data            =       $local_part
        transport       =       remote_smtp
        route_list      =       * exchange_server_ip
        no_more



# системные альясы
system_aliases:
        driver          =       redirect
        data            =       ${lookup{$local_part}lsearch{/etc/aliases}}
        user            =       mailnull
        group           =       mail
        file_transport  =       address_file
        pipe_transport  =       address_pipe
        allow_fail
        allow_defer


## локальные пользователи
localuser:
        driver = accept
        check_local_user
        transport = local_delivery
        cannot_route_message = Unknown user
800.retry_and_rewrite.conf

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

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

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

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

ldap_default_servers = <; ldap_server_ip

LDAP_AD_BINDDN = ldapuser@mydomain.local
LDAP_AD_PASS = ldappassword
LDAP_AD_BASE_DN =DC=mydomain,DC=local
# Макрос для организации запросов к LDAP-серверу.
LDAP_AD_MAIL_RCPT = \
user=LDAP_AD_BINDDN \
pass=LDAP_AD_PASS \
ldap:///LDAP_AD_BASE_DN?mail?sub?\
(&(|(objectClass=user)(objectClass=group))\
(proxyAddresses=SMTP:${quote_ldap:${local_part}@${domain}}))