Настройка exim в качестве mailhub...

Обсуждение технических вопросов по продуктам Novell под Linux, а также *nix систем

Настройка exim в качестве mailhub...

Сообщение Иван Левшин aka Ivan L. » 09 ноя 2005, 12:25

Приветствую всех, кто нашел время и силы на прочтение данного опуса :)

Итак, имеем следующую задачу - есть внутренняя почтовая система (ГВ 6.5 - один МТА, около 15 ПОА, два шлюза - вебакцесс и ГВИА). Надо связать ее с внешним миром посредством mailhub.
Для организации mailhub был выбран exim (Михаил Григорьев присоветовал), который был установлен на OES Linux. Exim устанавливался из rpm для SuSE Linux, взятого с сайта Exim.

После прочтения документации по Exim - и вправду очень подробной и толковой (правда, каюсь, осилил не всю - прошу не казнить), были произведены изменения в exim.conf, которые, по идее, должны заставить работать exim так, как нам нужно. А именно - заставил exim быть релеем для внутреннего гвиа (relay_from_hosts), отменил проверку отправителя - если почта идет с внутреннего сервака. Наружу письма ходят! Что, в принципе, есть хорошо :)

Теперь - интересное. Надо заставить exim посылать всю входящую почту (после соотв. проверок, ессно) на внутренний сервак. Для этого в секции REWRITE CONFIGURATION прописал правило, по которому изменялись бы заголовки To:

*@ourdomain.ru $1@corp.ourdomain.ru Ttbc

Проверил изменения через exim -brw - все вроде работает. Теперь, по идее, exim будет менять заголовок To: и пинать почту на внутренний сервак... Однако не тут-то было! Внутренний сервер почему-то считает, что exim пытается организовать через него релей и категорически этому противится!

Подумал сначала, что все дело в том, что производится rewrite - закомментировал правило, через kill -HUP перезапустил демон. Пробую с консоли через mail address@corp.ourdomain.ru отослать письмо - результат тот же!

Вопрос - где копать? Подозреваю, что копать надо exim, но где конкретно?
Иван Левшин aka Ivan L.
 
Сообщения: 2576
Зарегистрирован: 05 июн 2002, 18:36
Откуда: Новомосковск, Тул. обл.

Сообщение Михаил Григорьев » 09 ноя 2005, 12:54

Конфиг Exim плиз в студию!

P.S. Без коментариев только, а то портянка большая будет...
Аватара пользователя
Михаил Григорьев
 
Сообщения: 1462
Зарегистрирован: 04 июн 2002, 12:22
Откуда: Челябинск

Сообщение Иван Левшин aka Ivan L. » 09 ноя 2005, 13:10

Код: Выделить всё
######################################################################
#                    MAIN CONFIGURATION SETTINGS                     #
######################################################################
primary_hostname = mail.ourdomain.ru

domainlist local_domains = @ : lsearch;/etc/mail/localdomains
#domainlist relay_to_domains = corp.ourdomain.ru
hostlist   relay_from_hosts = 127.0.0.1 : lsearch;/etc/mail/relaydomains
hostlist   auth_relay_host = *

acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data

# av_scanner = clamd:/tmp/clamd
# spamd_address = 127.0.0.1 783

qualify_domain = ourdomain.ru

# qualify_recipient =

allow_domain_literals = false

never_users = root : bin : daemon : named

host_lookup = *

rfc1413_hosts = *
rfc1413_query_timeout = 0s

# Ivan - limits
smtp_accept_max = 100
smtp_connect_backlog = 50
smtp_accept_max_per_host = 10
smtp_accept_queue = 22
smtp_accept_queue_per_connection = 10
recipients_max = 16
recipients_max_reject = true
auto_thaw = 15m
freeze_tell = postmaster
split_spool_directory
#accept_8bitmime

# sender_unqualified_hosts =
# recipient_unqualified_hosts =
# percent_hack_domains =

ignore_bounce_errors_after = 30m
timeout_frozen_after = 7d

######################################################################
#                       ACL CONFIGURATION                            #
#         Specifies access control lists for incoming SMTP mail      #
######################################################################

begin acl

acl_check_rcpt:
  accept  hosts = :

  deny    message       = Restricted characters in address
          domains       = +local_domains
          local_parts   = ^[.] : ^.*[@%!/|]

  deny    message       = Restricted characters in address
          domains       = !+local_domains
          local_parts   = ^[./|] : ^.*[@%!] : ^.*/\\.\\./
 
    accept  hosts         = +relay_from_hosts
       delay = 30s

  accept  local_parts   = postmaster
          domains       = +local_domains
  delay = 30s

  require verify        = sender

  accept  domains       = +local_domains
          endpass
          verify        = recipient
  delay = 30s

  accept  authenticated = *

  deny    message       = relay not permitted

acl_check_data:
  accept

######################################################################
#                      ROUTERS CONFIGURATION                         #
#               Specifies how addresses are handled                  #
######################################################################

begin routers

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
  data = ${lookup{$local_part}lsearch{/etc/aliases}}
  user = eximuser
  file_transport = address_file
  pipe_transport = address_pipe

userforward:
  driver = redirect
  check_local_user
# local_part_suffix = +* : -*
# local_part_suffix_optional
  file = $home/.forward
# allow_filter
  no_verify
  no_expn
  check_ancestor
  file_transport = address_file
  pipe_transport = address_pipe
  reply_transport = address_reply

localuser:
  driver = accept
  check_local_user
# local_part_suffix = +* : -*
# local_part_suffix_optional
  transport = local_delivery
  cannot_route_message = Unknown user

######################################################################
#                      TRANSPORTS CONFIGURATION                      #
######################################################################

begin transports

remote_smtp:
  driver = smtp

local_delivery:
  driver = appendfile
  file = /var/mail/$local_part
  delivery_date_add
  envelope_to_add
  return_path_add
# group = mail
# mode = 0660

address_pipe:
  driver = pipe
  return_output

address_file:
  driver = appendfile
  delivery_date_add
  envelope_to_add
  return_path_add

address_reply:
  driver = autoreply

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

begin retry
*                      *           F,2h,15m; G,16h,1h,1.5; F,4d,6h

######################################################################
#                      REWRITE CONFIGURATION                         #
######################################################################

begin rewrite

*@ourdomain.ru   $1@corp.ourdomain.ru    Ttbc

######################################################################
#                   AUTHENTICATION CONFIGURATION                     #
######################################################################

begin authenticators

######################################################################
#                   CONFIGURATION FOR local_scan()                   #
######################################################################

# begin local_scan

# End of Exim configuration file


Портянка и так получилась немаленькая :)
Иван Левшин aka Ivan L.
 
Сообщения: 2576
Зарегистрирован: 05 июн 2002, 18:36
Откуда: Новомосковск, Тул. обл.

Сообщение Иван Левшин aka Ivan L. » 10 ноя 2005, 14:39

Сложилось такое впечатление, что exim посылает почту, думая, что внутренний сервер - релей на сам exim. Т.е. вместо того, чтобы просто почту отдать, он делает петлю :(
Иван Левшин aka Ivan L.
 
Сообщения: 2576
Зарегистрирован: 05 июн 2002, 18:36
Откуда: Новомосковск, Тул. обл.

Сообщение Юрий Бондаренко » 10 ноя 2005, 15:04

domainlist local_domains =
можно оставить пустой, все домены занесенные сюда, exim считает локальными хостящимися на этой же машине
domainlist relay_to_domains = corp.ourdomain.ru
заносятся домены для роутинга

в таком виде, после проверки почты Exim перешлет согласно MX записям в DNS

или можно написать в секции begin route повыше

to_xxx:
driver = manualroute
transport = remote_smtp
route_list = corp.ourdomain.ru 192.168.x.x
Юрий Бондаренко
 
Сообщения: 59
Зарегистрирован: 31 июл 2002, 18:26

Сообщение Иван Левшин aka Ivan L. » 10 ноя 2005, 15:55

Юрий Бондаренко - я решил именно через manualroute согласно доке exim (надо было все же дочитать ее до конца и внимательно :lol: ). Отключил полностью системные алиасы и локальную доставку (мне на этом серваке все равно оно не надо) и прописал маршрутизатор (router):

hub_route:
driver = manualroute
transport = remote_smtp
route_list = * mail.corp.ourdomain.ru

Т.е. по сути - твой второй вариант. Не читал форум - а то решил бы минут на 40 раньше :lol: Спасибо за помощь

Конечно, надо посмотреть, как поведут себя системные сервисы на шлюзе - но это думаю побороть с использованием /etc/aliases. system_aliases все же придется включить...
Иван Левшин aka Ivan L.
 
Сообщения: 2576
Зарегистрирован: 05 июн 2002, 18:36
Откуда: Новомосковск, Тул. обл.

Сообщение Иван Левшин aka Ivan L. » 10 ноя 2005, 16:03

Раскомментировал system_aliases и переместил hub_route после него... В алиасах, ессно, прописал все необходимое. Все работает!
Иван Левшин aka Ivan L.
 
Сообщения: 2576
Зарегистрирован: 05 июн 2002, 18:36
Откуда: Новомосковск, Тул. обл.


Вернуться в *nix

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22

cron