Так всётаки как мне сделать хитрющее перенаправление почты?

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
bobot
ст. прапорщик
Сообщения: 589
Зарегистрирован: 2008-05-28 20:03:17

Так всётаки как мне сделать хитрющее перенаправление почты?

Непрочитанное сообщение bobot » 2009-02-25 14:07:39

задача в следуещем заключается(система dovecot+Exim)
Есть у меня почтовые сервер1 и сервер 2:
мне надо сделать чтоб почта приходила на сервер1(это без проблем и так ходит :-D ).
вот у меня например есть на сервере1 юзера
bobot@mydomain, yura@mydomain, а на сервере2 есть юзер vova.
Т.е. мне надо чтоб при приёме письма сервер1 перенаправлял на сервер2 соответствующим юзерам.

Когда письмо приходит на сервер1 оно проверяет есть ли там юзер или нету! если нету, то должно осуществлятся перенаправление на сервер 2 этому юзеру(у меня если на первом юзера такого нету то на втором точно есть).

Вот как это перенаправление сделать ??

пробывал делать так в конфиге exim :
добавлял в
begin router

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

unknown:
 driver = manualroute
 transport = remote_smtp
 route_list = * сервер2
 no_verify
почта ходит нормально но когда я например посылаю на сервер2 (например vova@сервер2) оно должно проверить если такой юзер на сервере 1 и потом перенаправить на сервер2 (у меня приём осуществляется на сервере1)
так оно вместо того что делать так !! письмо просто замаражуется вот лог exim

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

2009-02-25 12:42:12 1LcJ5Y-0002Zf-Tq <= www@сервер1 U=www P=local S=713 id=dea370ce32f3f49c8858b3ee1bfdf293@сервер1 from <сервер1> for vova@сервер2
2009-02-25 12:42:12 H=сервер2 [91.202.128.72] F=<> rejected RCPT <www@сервер1>: Unrouteable address
2009-02-25 12:42:12 1LcJ5Y-0002Zf-Tq ** vova@сервер2.ua R=unknown T=remote_smtp: SMTP error from remote mail server after RCPT TO:<vova@сервер1>: host сервер1 [91.202.128.72]: 550-Verification failed for <www@сервер2>\n550-Called:   91.202.128.58\n550-Sent:     RCPT TO:<www@сервер2>\n550-Response: 550 unknown user\n550 Sender verify failed
2009-02-25 12:42:12 1LcJ5Y-0002Zj-W5 <= <> R=1LcJ5Y-0002Zf-Tq U=mailnull P=local S=1898 from <> for www@сервер2
2009-02-25 12:42:12 1LcJ5Y-0002Zf-Tq Completed
2009-02-25 12:42:13 1LcJ5Y-0002Zj-W5 ** www@сервер1 R=unknown T=remote_smtp: SMTP error from remote mail server after RCPT TO:<www@сервер2>: host сервер1 [91.202.128.72]: 550 relay not permitted
2009-02-25 12:42:13 1LcJ5Y-0002Zj-W5 Frozen (delivery error message)

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

Аватара пользователя
nick_f
рядовой
Сообщения: 48
Зарегистрирован: 2008-07-10 11:56:28

Re: Так всётаки как мне сделать хитрющее перенаправление почты?

Непрочитанное сообщение nick_f » 2009-02-25 17:29:43

а если так:
на этапе приема письма на server1 в acl проверять отуда-то(текстовый файл/mysql база ) список пользователей server2, и добавлять произвольный заголовок
и добавить роутер, который письма с этим заголовком будет роутить на server2?
Изображение

Аватара пользователя
bobot
ст. прапорщик
Сообщения: 589
Зарегистрирован: 2008-05-28 20:03:17

Re: Так всётаки как мне сделать хитрющее перенаправление почты?

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

nick_f писал(а):а если так:
на этапе приема письма на server1 в acl проверять отуда-то(текстовый файл/mysql база ) список пользователей server2, и добавлять произвольный заголовок
и добавить роутер, который письма с этим заголовком будет роутить на server2?
Блин я другое заметил!!!!!! что если у меня этих строчек нету

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

unknown:
 driver = manualroute
 transport = remote_smtp
 route_list = * сервер2
 no_verify
( это я добовлял для перенаправления)
то если я посылаю на сервер2 письмо оно не доходит и матюкается типа адрес немашрутир ну нема его
а на все остальные домены нормально!!
А когда я посылаю с сервера2 на сервер 1 нормально всё читается!! что за фишка!
а если я добавляю

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

unknown:
 driver = manualroute
 transport = remote_smtp
 route_list = * сервер2
 no_verify
то письма на все домена нормально летает, а как только я посылаю на домен vovoa@сервер2 оно пипец не идёт!!

Вроде почтовик сам по себе на сервере 2 нормально работает! так что ж єто может быть?

flot
рядовой
Сообщения: 26
Зарегистрирован: 2009-02-14 9:17:16

Re: Так всётаки как мне сделать хитрющее перенаправление почты?

Непрочитанное сообщение flot » 2009-02-26 20:13:27

Вы бы привели конфиг (по крайней мере всю секцию роутеров и acl + необходимые определения). Без этого вам помочь весьма сложно.
И потом вы в описании проблемы третий раз пишите
юзер vova
без домена, это ошибка?

И еще, почему вы не хотите выделить пользователей на сервере2 в отдельный домен?

Аватара пользователя
bobot
ст. прапорщик
Сообщения: 589
Зарегистрирован: 2008-05-28 20:03:17

Re: Так всётаки как мне сделать хитрющее перенаправление почты?

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

flot писал(а):Вы бы привели конфиг (по крайней мере всю секцию роутеров и acl + необходимые определения). Без этого вам помочь весьма сложно.
И потом вы в описании проблемы третий раз пишите
юзер vova
без домена, это ошибка?

И еще, почему вы не хотите выделить пользователей на сервере2 в отдельный домен?
это делается для того чтобы мёртвых ящиков небыло на новом мыле! ну просто на старом (сервер2) много ящиков с 2002 года!
вот конфиг exim:

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

primary_hostname = newmail.univ.kiev.ua
domainlist local_domains = ${lookup mysql{SELECT domain FROM domains WHERE domain='${domain}' AND (type='LOCAL' OR type='VIRT
domainlist relay_to_domains = ${lookup mysql{SELECT domain FROM domains WHERE domain='${domain}' AND type='RELAY'}}
hostlist   relay_from_hosts = 127.0.0.1
auth_advertise_hosts = *
daemon_smtp_ports = 25 : 465
tls_on_connect_ports = 465
tls_advertise_hosts = *
tls_certificate = /etc/ssl/certs/dovecot.pem
tls_privatekey = /etc/ssl/private/dovecot.pem
log_selector = +all_parents +lost_incoming_connection +received_sender +received_recipients +smtp_confirmation +smtp_syntax_e
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_mime = acl_check_mime
qualify_domain = newmail.univ.kiev.ua
allow_domain_literals = false
never_users = root
host_lookup = *
rfc1413_hosts = *
rfc1413_query_timeout = 0s
ignore_bounce_errors_after = 30m
timeout_frozen_after = 3d
freeze_tell = postmaster
message_size_limit = 10M
smtp_accept_max = 100
smtp_accept_max_per_connection = 5
smtp_accept_max_per_host = 2
split_spool_directory = true
remote_max_parallel = 15
smtp_banner = "Welcome on our mail server!\n\
    This system does not accept Unsolicited \
 Commercial Email\nand will blacklist \
    offenders via our spam processor.\nHave a \
    nice day!\n\n${primary_hostname} ESMTP"

#hide mysql_servers = localhost/exim/exim/exim это рабочит мой
hide mysql_servers = localhost/webmail/exim/exim

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

acl_check_rcpt:

  accept  hosts = :

  deny    domains       = +local_domains
          local_parts   = ^[.] : ^.*[@%!/|]

  deny    domains       = !+local_domains
          local_parts   = ^[./|] : ^.*[@%!] : ^.*/\\.\\./

  accept  local_parts   = postmaster
          domains       = +local_domains

#  require verify        = sender

#  deny    message       = HELO/EHLO required by SMTP RFC
#          condition     = ${if eq{$sender_helo_name}{}{yes}{no}}
#
#  deny    message       = Go Away! You are spammer.
#          condition     = ${if match{$sender_host_name} \
#                          {bezeqint\\.net|net\\.il|dialup|dsl|pool|peer|dhcp} \
#                          {yes}{no}}
#
#  deny    message       = rejected because \

#  $sender_host_address is in a black list at $dnslist_domain\n$dnslist_text
#          log_message   = found in $dnslist_domain
#          dnslists      = relays.ordb.org
#  deny    message       = message from \
#  $sender_host_address rejected - see http://njabl.org/
#          log_message   = found in $dnslist_domain
#          dnslists      = dnsbl.njabl.org
#  deny    message       = rejected because \
#  $sender_host_address for bad WHOIS info, see http://www.rfc-ignorant.org/
#          log_message   = found in $dnslist_domain
#          dnslists      = ipwhois.rfc-ignorant.org
#  deny    message       = rejected because $sender_host_address \
#  is in a black list at $dnslist_domain\n$dnslist_text
#          log_message   = found in $dnslist_domain
#          dnslists      = dialups.mail-abuse.org
#  deny    message       = rejected because $sender_host_address \
#  is in a black list at $dnslist_domain\n$dnslist_text
#          log_message   = found in $dnslist_domain
#          dnslists      = list.dsbl.org
#  deny    message       = Spam blocked see: \
#  http://www.spamcop.net/w3m?action=checkblock&ip=$sender_host_address
#          log_message   = found in $dnslist_domain
#          dnslists      = bl.spamcop.net
#  deny    message       = rejected, $sender_host_address \
#  Open Proxy, see: $dnslist_domain\n$dnslist_text
#          log_message   = found in $dnslist_domain
#          dnslists      = dnsbl.void.ru

  accept  domains       = +local_domains
          endpass
          message       = unknown user
          verify        = recipient

  accept  domains       = +relay_to_domains
          endpass
          message       = unrouteable address
          verify        = recipient

accept  hosts         = +relay_from_hosts
  accept  authenticated = *
  deny    message       = relay not permitted

acl_check_mime:

  warn decode = default

  deny message = Blacklisted file extension detected ($mime_filename)
       condition = ${if match \
                    {${lc:$mime_filename}} \
                    {\N(\.exe|\.pif|\.bat|\.scr|\.lnk|\.com|\.vbs|\.cpl)$\N} \
                    {1}{0}}

  deny message = Sorry, noone speaks chinese here
       condition = ${if eq{$mime_charset}{gb2312}{1}{0}}

accept

######################################################################
#                      ROUTERS CONFIGURATION                         #
#               Specifies how addresses are handled                  #
######################################################################
#     THE ORDER IN WHICH THE ROUTERS ARE DEFINED IS IMPORTANT!       #
# An address is passed to each router in turn until it is accepted.  #
######################################################################

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 mysql{SELECT recipients FROM aliases \
#         WHERE local_part='${local_part}' AND domain='${domain}'}}
#userforward:
#  driver = redirect
#  allow_fail
#  allow_defer
#  data = ${lookup mysql{SELECT recipients FROM userforward \
#         WHERE local_part='${local_part}' AND domain='${domain}'}}
virtual_localuser:
  driver = accept
  domains = ${lookup mysql{SELECT domain from domains WHERE domain='${domain}'}}
  local_parts = ${lookup mysql{SELECT login from users WHERE login='${local_part}' AND domain='${domain}'}}
  transport = local_delivery
#dovecot_user:
#  driver = accept
#  condition = ${lookup mysql{SELECT `goto` FROM `alias` WHERE `address`='${quote_mysql:$local_part@$domain}' OR `address`='$
#  transport = dovecot_delivery

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

begin transports

remote_smtp:
  driver = smtp
#dovecot_delivery:
#  driver = pipe
#  command = /usr/local/libexec/dovecot/deliver -d $local_part@$domain
#  message_prefix =
#  message_suffix =
#  delivery_date_add
#  envelope_to_add
#  return_path_add
#  log_output
#  user = mailnull
local_delivery:
  driver = appendfile
  check_string = ""
  create_directory
  delivery_date_add
  #directory = /var/mail/$domain/$local_part это рабочий мой
  directory = /var/mail/$local_part
  directory_mode = 770
  envelope_to_add
  group = mail
  maildir_format
  maildir_tag = ,S=$message_size
  message_prefix = ""
  message_suffix = ""
  mode = 0660
  quota = ${lookup mysql{SELECT quota FROM users WHERE login='${local_part}' AND domain='${domain}'}{${value}M}}
  quota_size_regex = S=(\d+)$
  quota_warn_threshold = 75%
  return_path_add

 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

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


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

begin rewrite

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

begin authenticators

auth_plain:
  driver = plaintext
  public_name = PLAIN
  server_condition = ${lookup mysql{SELECT login FROM users \
                        WHERE login = '${quote_mysql:${local_part:$2}}' \
                        AND domain = '${quote_mysql:${domain:$2}}' \
                        AND decrypt = '${quote_mysql:$3}' \
                        AND status = '1'}{yes}{no}}
  server_prompts = :
server_set_id = $2

auth_login:
  driver = plaintext
  public_name = LOGIN
 server_condition = ${lookup mysql{SELECT login FROM users \
                        WHERE login = '${quote_mysql:${local_part:$1}}' \
                        AND domain = '${quote_mysql:${domain:$1}}' \
                        AND decrypt = '${quote_mysql:$2}' \
                        AND status = '1'}{yes}{no}}
  server_prompts = Username:: : Password::
server_set_id = $1

auth_cram_md5:
  driver = cram_md5
  public_name = CRAM-MD5
  server_secret = ${lookup mysql{SELECT decrypt FROM users \
                        WHERE login = '${quote_mysql:${local_part:$1}}' \
                        AND domain = '${quote_mysql:${domain:$1}}' \
                        AND status = '1'}{$value}fail}
server_set_id = $1

# End of Exim configuration file
это конфиг без добавления

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

unknown:
 driver = manualroute
 transport = remote_smtp
 route_list = * сервер2
 no_verify

flot
рядовой
Сообщения: 26
Зарегистрирован: 2009-02-14 9:17:16

Re: Так всётаки как мне сделать хитрющее перенаправление почты?

Непрочитанное сообщение flot » 2009-02-27 11:55:37

В какое место вы вставляете добавление? Нужно в самый конец секции роутеров. Еще можно попробовать * заменить на домен, для которого должно работать перенаправление.

Аватара пользователя
bobot
ст. прапорщик
Сообщения: 589
Зарегистрирован: 2008-05-28 20:03:17

Re: Так всётаки как мне сделать хитрющее перенаправление почты?

Непрочитанное сообщение bobot » 2009-02-27 11:59:49

flot писал(а):В какое место вы вставляете добавление? Нужно в самый конец секции роутеров. Еще можно попробовать * заменить на домен, для которого должно работать перенаправление.
вот

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

begin routers
unknown:
  driver = manualroute
  transport = remote_smtp
  route_list = * mail.univ.kiev.ua
  no_verify
dnslookup:
  driver = dnslookup
  domains = ! +local_domains
  transport = remote_smtp
  ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
  no_more
Т.е вначало begin router

flot
рядовой
Сообщения: 26
Зарегистрирован: 2009-02-14 9:17:16

Re: Так всётаки как мне сделать хитрющее перенаправление почты?

Непрочитанное сообщение flot » 2009-02-27 12:57:38

Роутеры по порядку работают, вставляя в начало вы всю почту вообще кидаете на сервер2.
Вам же не это надо?

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

Re: Так всётаки как мне сделать хитрющее перенаправление почты?

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

flot писал(а):Роутеры по порядку работают, вставляя в начало вы всю почту вообще кидаете на сервер2.
Вам же не это надо?
Ему надо чтобы кто-то за него проблемы решал, и с этой целью он создаёт одни и те же топики.

http://forum.lissyara.su/viewtopic.php?f=20&t=15527
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
bobot
ст. прапорщик
Сообщения: 589
Зарегистрирован: 2008-05-28 20:03:17

Re: Так всётаки как мне сделать хитрющее перенаправление почты?

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

flot писал(а):В какое место вы вставляете добавление? Нужно в самый конец секции роутеров. Еще можно попробовать * заменить на домен, для которого должно работать перенаправление.
Ага понял! но как же быть с этой проблемой которая возникла в следствии первой)

Я помоему писал вверху! Обнаружился факт что почта на сервер 2 не доставляется если я отправляю с сервера1 а на любые другие домена достовляется! А если я со второго сервака посылаю на первый то всё нормально читается сервером1 ! в логах пишет типа нету такого хоста как сервер2 но он же есть?(и работает вот уже много лет) :st:

flot
рядовой
Сообщения: 26
Зарегистрирован: 2009-02-14 9:17:16

Re: Так всётаки как мне сделать хитрющее перенаправление почты?

Непрочитанное сообщение flot » 2009-02-27 13:35:18

Так повторите эксперимент вставив роутер unknown в конец.

Кстати я согласен с dikens3 что не следует плодить кучу тем в форуме.

Биться головой о стену вам точно не поможет. А поможет внимательно посмотреть конфиг и логи. Можно запустить exim с отладкой и посмотреть путь почтового сообщения. Еще полезно документацию почитать по тем командам, которые вы используете.

Аватара пользователя
bobot
ст. прапорщик
Сообщения: 589
Зарегистрирован: 2008-05-28 20:03:17

Re: Так всётаки как мне сделать хитрющее перенаправление почты?

Непрочитанное сообщение bobot » 2009-02-27 14:11:02

flot писал(а):Так повторите эксперимент вставив роутер unknown в конец.

Кстати я согласен с dikens3 что не следует плодить кучу тем в форуме.

Биться головой о стену вам точно не поможет. А поможет внимательно посмотреть конфиг и логи. Можно запустить exim с отладкой и посмотреть путь почтового сообщения. Еще полезно документацию почитать по тем командам, которые вы используете.
не я имею ввиду что даже без этой вставки exim не ложит именно на домен сервер2 почту! а на все остальные ложит

Аватара пользователя
bobot
ст. прапорщик
Сообщения: 589
Зарегистрирован: 2008-05-28 20:03:17

Re: Так всётаки как мне сделать хитрющее перенаправление почты?

Непрочитанное сообщение bobot » 2009-02-27 15:59:27

bobot писал(а):
flot писал(а):Так повторите эксперимент вставив роутер unknown в конец.

Кстати я согласен с dikens3 что не следует плодить кучу тем в форуме.

Биться головой о стену вам точно не поможет. А поможет внимательно посмотреть конфиг и логи. Можно запустить exim с отладкой и посмотреть путь почтового сообщения. Еще полезно документацию почитать по тем командам, которые вы используете.
не я имею ввиду что даже без этой вставки exim не ложит именно на домен сервер2 почту! а на все остальные ложит
Как посмотреть путь почтового сообщения? вот читал по exim полезные команды http://www.opennet.ru/base/net/exim_options.txt.html но там что то я такого не нахожу и в нэте тоже всё стандартно как там в этой статье

Аватара пользователя
bobot
ст. прапорщик
Сообщения: 589
Зарегистрирован: 2008-05-28 20:03:17

Re: Так всётаки как мне сделать хитрющее перенаправление почты?

Непрочитанное сообщение bobot » 2009-02-27 16:00:40

flot писал(а):Так повторите эксперимент вставив роутер unknown в конец.

Кстати я согласен с dikens3 что не следует плодить кучу тем в форуме.

Биться головой о стену вам точно не поможет. А поможет внимательно посмотреть конфиг и логи. Можно запустить exim с отладкой и посмотреть путь почтового сообщения. Еще полезно документацию почитать по тем командам, которые вы используете.
Как посмотреть путь почтового сообщения? вот читал по exim полезные команды http://www.opennet.ru/base/net/exim_options.txt.html но там что то я такого не нахожу и в нэте тоже всё стандартно как там в этой статье