LINUX.ORG.RU
ФорумAdmin

exim пересылать почту


0

0

Может кто сталквался. Не могу найти как сделать такое:

Почта крутится на домене domain.ru, удаленный офис находится в другом месте со своим почтарем и адресами типа office.domain.ru. Нужно, чтобы пользователи domain.ru слали почту на office.domain.ru и она туда ходила :) Ранее на постфиксе всё это крутилось и была строка в transports постфикса. А как сделать подобное в exim?

Может быть, добавить специально обученный роутер?

send_to_office:
   driver = manualroute
   domains = office.domain.ru
   transport = remote_smtp
   route_list = office.domain.ru 123.45.67.89 byname

И в relay_to_domains дописать office.domain.ru

braindef
()
Ответ на: комментарий от braindef

Тогда оно ругается вот так:

A message that you sent could not be delivered to one or more of its recipients. This is a permanent error. The following address(es) failed:

user@office.domain.ru all relevant MX records point to non-existent hosts

MX для office.domain.ru является mail.domain.ru

mirtoff
() автор топика
Ответ на: комментарий от braindef

primary_hostname = domain.ru

domainlist local_domains = domain.ru
domainlist relay_to_domains = office.domain.ru
hostlist   relay_from_hosts = 127.0.0.1 : 10.0.0.0/16 


log_file_path = /var/log/exim/exim_%slog
log_selector = \
+all_parents \
+lost_incoming_connection \
+received_sender \
+received_recipients \
+smtp_confirmation \
+smtp_syntax_error \
+smtp_protocol_error \
-queue_run

acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data
daemon_smtp_ports = 25 : 465 : 587
tls_on_connect_ports = 465
sender_unqualified_hosts = +relay_from_hosts
recipient_unqualified_hosts = +relay_from_hosts
ignore_bounce_errors_after = 45m
auto_thaw = 1h
smtp_accept_max = 50
smtp_accept_max_per_connection = 25
smtp_connect_backlog = 30
smtp_accept_max_per_host = 20
remote_max_parallel = 15
return_size_limit = 70k
message_size_limit = 10M
helo_allow_chars = _
smtp_enforce_sync = true
never_users = root
host_lookup = *
rfc1413_hosts = *
rfc1413_query_timeout = 5s

timeout_frozen_after = 7d

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   = ^[./|] : ^.*[@%!] : ^.*/\\.\\./


 deny    message       = "HELO/EHLO обязано быть по SMTP RFC"
         condition     = ${if eq{$sender_helo_name}{}{yes}{no}}
         
 accept  authenticated = *


 deny    message       = "Не надо пихать свой IP в качестве HELO!"
          hosts         =  * : !+relay_from_hosts
          condition     = ${if eq{$sender_helo_name}{$sender_host_address} \
         {true}{false}}
         
 deny    condition     = ${if eq{$sender_helo_name}{$interface_address}{yes}{no}}
             hosts         = !127.0.0.1 : !localhost : *
             message       = "Это мой IP-адрес! Пшёл прочь!"
             
 deny    message       = "Bad hostname"
           condition     = ${if match{$sender_host_name} \
           {adsl|dialup|pool|peer|ppp|pppoe|dhcp} \
           {yes}{no}}

 deny    message       = "Ваш хост в блэклисте - $dnslist_domain"
           dnslists      = cbl.abuseat.org : \
           bl.spamcop.net : \
           dul.ru

 warn
         # ставим дефолтовую задержку в 20 секунд
         set acl_m0 = 20s
 warn
         # ставим задержку в 0 секунд своим хостам и 
         # дружественным сетям (соседняя контора :))
         hosts = +relay_from_hosts
         set acl_m0 = 0s
         
         
 accept  domains       = +local_domains
           endpass
           message       = "В этом домене нет такого пользователя"
           verify        = recipient
   
         # Проверяем получателя в релейных доменах
         # Опять-таки если не проходит -> следующий ACL,
         # и если непрошёл и там - deny
           accept  domains       = +relay_to_domains
           endpass
           message       = "Моя сервера не знать маршрут на этот хост..."
           verify        = recipient
                                                             
         # Разрешаем почту от доменов в списке relay_from_hosts
           accept  hosts         = +relay_from_hosts
# Если неподошло ни одно правило - чувак явно ищет
         # открытый релей. Пшёл прочь. :)
           deny    message       = "Свободен. Это тебе не ОпенРелей." 

accept  local_parts   = postmaster
          domains       = +local_domains
 require verify        = sender
 accept  hosts         = +relay_from_hosts
          control       = submission
accept  authenticated = *
          control       = submission

 require message = relay not permitted
          domains = +local_domains : +relay_to_domains

require verify = recipient

 accept


begin routers

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


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

localuser:
  driver = accept
  condition = ${lookup pgsql {select uid from VEMAIL where email = '$local_part@$domain'}{yes}{no}}
#  check_local_user
  transport = local_delivery
#   transport = dovecot_delivery
   cannot_route_message = Unknown user

send_to_office:
   driver = manualroute
   domains = office.domain.ru
   transport = remote_smtp
   route_list = office.domain.ru 91.143.*.*

begin transports

remote_smtp:
  driver = smtp
local_delivery:
  driver = appendfile
  directory = ${lookup pgsql{select (homedir || '/' || mailbox) from VEMAIL where email = '$local_part@$domain'}{$value}fail}
  create_directory
  directory_mode = 0770
  maildir_format
  delivery_date_add
  envelope_to_add
  return_path_add
  group = mem
  user = admin
#  mode = 0660
  no_mode_fail_narrower


address_pipe:
  driver = pipe
  return_output


address_file:
  driver = appendfile
  delivery_date_add
  envelope_to_add
  return_path_add

address_reply:
  driver = autoreply

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

begin rewrite
begin authenticators
dovecot_login:
  driver = dovecot
  public_name = LOGIN
  server_socket = /var/run/dovecot/auth-client
  # setting server_set_id might break several headers in mails sent by authenticated smtp. So be careful.
  server_set_id = $auth1
        
dovecot_plain:
  driver = dovecot
  public_name = PLAIN
  server_socket = /var/run/dovecot/auth-client
  server_set_id = $auth1














mirtoff
() автор топика
Ответ на: комментарий от braindef

чорт возьми - заработало! Спасибо вам!

mirtoff
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.