Непонятная доставка

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Agronom
ст. сержант
Сообщения: 305
Зарегистрирован: 2006-12-11 10:30:13

Непонятная доставка

Непрочитанное сообщение Agronom » 2015-03-04 13:04:20

Есть основной домен "domain.ru" и кучка виртуальных доменов с мх-записью на него же. Почта приходит на первый почтовик-exim 1)алиасами разруливается дальше на вирты 2) потом идет доставка локальным юзерам 3) все что осталось - на основной почтовый сервер-Лотус. Доставка проходит нормально и на вирты и на Лотус и локальным юзерам, но есть одно НО. Если приходит адрес user@virtdomain.ru, а в алиасах для него только прописан адрес info@virtdomain.ru, то почта доставляется на адрес user@domain.ru, а должен быть отлуп :st:
вот настройки:
Основное:
domainlist local_domains = @:localhost:lsearch;/etc/exim/aliases/domains.local
содержимое domains.local:

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

domain.ru
filial1.ru
filial2.ru
virtdomain.ru
...
virtdomain5.ru
АСЛы:
MAIN

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

acl_smtp_rcpt = acl_check_rcpt
acl_smtp_mail = acl_check_sender
ACL CONFIGURATION

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

 begin acl
  
  acl_check_sender:
  deny
  log_message = mach host_reject.list
  senders = /etc/exim/reject.list
  accept
 acl_check_rcpt:
accept  hosts = :
                                                                     
deny    domains       = +local_domains
        local_parts   = ^[.] : ^.*[@%!/|]

deny    message       = Restricted sender in address
            domains       = +local_domains
            local_parts   = match /etc/exim/rejected_to.list
            !hosts = 127.0.0.1 : +relay_from_hosts

deny    domains       = !+local_domains
          local_parts   = ^[./|] : ^.*[@%!] : ^.*/\\.\\./
          
deny        message = You aren't authorized to send on this address
domains       = +local_domains
                local_parts   = ^.*rjnr* : /etc/exim/rejected_to.list       
                local_parts   = /etc/exim/rejected_to.list 
                                                          
accept  local_parts   = postmaster

require verify        = sender

deny      message       = rejected because $sender_host_address is in a black list at $dnslist_domain\n$dnslist_text
                     !hosts = +trusted_hosts_list           
                     dnslists      = zen.spamhaus.org : http.dnsbl.sorbs.net : socks.dnsbl.sorbs.net : smtp.dnsbl.sorbs.net : dul.ru : dul.dnsbl.sorbs.net 

deny message = Sorry, noone speaks chinese here
           condition = ${if eq{$mime_charset}{gb2312}{1}{0}}
                    
accept
      deny    message    = "your hostname is bad (adsl, poll, ppp & etc)."
      condition  = ${if match{$sender_host_name} \
                    {adsl|dialup|pool|peer|dhcp} \
                    {yes}{no}}

accept  domains       = +local_domains
            endpass

accept  domains       = +relay_to_domains
            endpass

accept  hosts         = +relay_from_hosts
deny    message       = relay not permitted
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 = exim
 file_transport = address_file
 pipe_transport = address_pipe
            
multi_aliases1:
  driver = redirect
  allow_fail
  allow_defer
  data = ${lookup{$local_part}lsearch{/etc/exim/aliases/aliases_fil1}}
  file_transport = address_file
  pipe_transport = address_pipe

multi_aliases2:
  driver = redirect
  allow_fail
  allow_defer
  data = ${lookup{$local_part}lsearch{/etc/exim/aliases/aliases_fil2}}
  file_transport = address_file
  pipe_transport = address_pipe
...
virtual:
  driver = redirect
  domains = dsearch;/etc/exim/aliases/
  data = ${lookup{$local_part}lsearch{/etc/exim/aliases/$domain}}
  file_transport = address_file
  pipe_transport = address_pipe

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

smart_route:
        driver = manualroute
        transport = remote_smtp
        route_list = * 192.168.1.1

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

Аватара пользователя
Agronom
ст. сержант
Сообщения: 305
Зарегистрирован: 2006-12-11 10:30:13

Непонятная доставка

Непрочитанное сообщение Agronom » 2015-03-05 15:19:25

Приведу пример для ясности, есть основной домен domain.ru и виртуальный домен для сайта - virtdomain.ru, у которого есть только пара алиасов:
info: pupkin@main.domain.ru
zakaz: pupkina@main.domain.ru
Основные почтовые адреса обрабатываются на другом сервере (main.domain.ru) и для них тоже есть алиасы
Отправляется письмо на адрес ivanov@virtdomain.ru, проходит проверка на локальный домен, потом рассматривается локальная часть - все ок и отправляется письмо на адрес ivanov@main.domain.ru вот листинг тестовой отправки:
  • Код: Выделить всё

    Соединение, проверка на разные правила и черные списки
    ...
    user@mail.ru in "/etc/exim/reject.list"? no (end of list)
    deny: condition test failed
    processing "accept"
    accept: condition test succeeded
    SMTP>> 250 OK
    SMTP<< RCPT TO: ivanov@virtdomain.ru
    using ACL "acl_check_rcpt"
    processing "accept"
    check hosts = :
    host in ":"? no (end of list)
    accept: condition test failed
    processing "deny"
    check domains = +local_domains
    search_open: lsearch "/etc/exim/aliases/domains.local"
    search_find: file="/etc/exim/aliases/domains.local"
      key="virtdomain.ru" partial=-1 affix=NULL starflags=0
    LRU list:
      9/etc/exim/aliases/domains.local
      End
    internal_search_find: file="/etc/exim/aliases/domains.local"
      type=lsearch key="virtdomain.ru"
    file lookup required for virtdomain.ru
      in /etc/exim/aliases/domains.local
    lookup yielded: 
    virtdomain.ru in "@:localhost:lsearch;/etc/exim/aliases/domains.local"? yes (matched "lsearch;/etc/exim/aliases/domains.local")
    data from lookup saved for cache for +local_domains: 
    virtdomain.ru in "+local_domains"? yes (matched "+local_domains")
    check local_parts = ^[.] : ^.*[@%!/|]
    ivanov in "^[.] : ^.*[@%!/|]"? no (end of list)
    deny: condition test failed
    processing "deny"
    check domains = +local_domains
    cached yes match for +local_domains
    cached lookup data = 
    virtdomain.ru in "+local_domains"? yes (matched "+local_domains" - cached)
    check local_parts = match /etc/exim/rejected_to.list
    ivanov in "match /etc/exim/rejected_to.list"? no (end of list)
    deny: condition test failed
    processing "deny"
    check domains = !+local_domains
    cached yes match for +local_domains
    cached lookup data = 
    virtdomain.ru in "!+local_domains"? no (matched "!+local_domains" - cached)
    deny: condition test failed
    processing "deny"
    check domains = +local_domains
    cached yes match for +local_domains
    cached lookup data = 
    virtdomain.ru in "+local_domains"? yes (matched "+local_domains" - cached)
    check local_parts = ^.*rjnr* : /etc/exim/rejected_to.list
    ivanov in "^.*rjnr* : /etc/exim/rejected_to.list"? no (end of list)
    deny: condition test failed
    processing "accept"
    check local_parts = postmaster
    ivanov in "postmaster"? no (end of list)
    accept: condition test failed
    processing "require"
    check verify = sender
    ...
    дальше проверка отправителя 
    ...
    sender user@mail.ru verified ok
    require: condition test succeeded
    processing "accept"
    ...
    deny: condition test failed
    processing "accept"
    accept: condition test succeeded
    SMTP>> 250 Accepted
    SMTP<< DATA
    SMTP>> 354 Enter message, ending with "." on a line by itself
    search_tidyup called
    host in ignore_fromline_hosts? no (option unset)
    >>Headers received:
    Subject: test
    
    search_tidyup called
    >>Headers after rewriting and local additions:
      Subject: test
    
    Data file written for message 1YT4hB-000704-2k
    >>Generated Received: header line
    P Received: from [194.67.23.20] (helo=mxs.mail.ru)
            by domain.ru with esmtp (Exim 4.72)
            (envelope-from <user@mail.ru>)
            id 1YT4hB-000704-2k
            for ivanov@virtdomain.ru; Wed, 04 Mar 2015 11:30:21 +0300
    PDKIM <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    calling local_scan(); timeout=300
    local_scan() returned 0 NULL
    LOG: MAIN
      <= user@mail.ru H=(mxs.mail.ru) [194.67.23.20] P=esmtp S=219
    SMTP>> 250 OK id=1YT4hB-000704-2k
    smtp_setup_msg entered
    SMTP<< QUIT
    SMTP>> 221 domain.ru closing connection
    LOG: smtp_connection MAIN
      SMTP connection from (mxs.mail.ru) [194.67.23.20] closed by QUIT
    search_tidyup called
    >>>>>>>>>>>>>>>> Exim pid=26912 terminating with rc=0 >>>>>>>>>>>>>>>>
    250-domain.ru Hello mxs.mail.ru [194.67.23.20]
    250-SIZE 20971520
    250-PIPELINING
    250 HELP
    250 OK
    250 Accepted
    354 Enter message, ending with "." on a line by itself
    250 OK id=1YT4hB-000704-2k
P.S. если отправить на адрес lkjlkjlkj@virtdomain.ru (в локальной части абракадабра, которой нет ни в алиасах, ни в адресной книге ) то как и положено - отлуп