Страница 1 из 1
Так всётаки как мне сделать хитрющее перенаправление почты?
Добавлено: 2009-02-25 14:07:39
bobot
задача в следуещем заключается(система dovecot+Exim)
Есть у меня почтовые сервер1 и сервер 2:
мне надо сделать чтоб почта приходила на сервер1(это без проблем и так ходит

).
вот у меня например есть на сервере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)
Re: Так всётаки как мне сделать хитрющее перенаправление почты?
Добавлено: 2009-02-25 17:29:43
nick_f
а если так:
на этапе приема письма на server1 в acl проверять отуда-то(текстовый файл/mysql база ) список пользователей server2, и добавлять произвольный заголовок
и добавить роутер, который письма с этим заголовком будет роутить на server2?
Re: Так всётаки как мне сделать хитрющее перенаправление почты?
Добавлено: 2009-02-26 12:06:57
bobot
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 нормально работает! так что ж єто может быть?
Re: Так всётаки как мне сделать хитрющее перенаправление почты?
Добавлено: 2009-02-26 20:13:27
flot
Вы бы привели конфиг (по крайней мере всю секцию роутеров и acl + необходимые определения). Без этого вам помочь весьма сложно.
И потом вы в описании проблемы третий раз пишите
юзер vova
без домена, это ошибка?
И еще, почему вы не хотите выделить пользователей на сервере2 в отдельный домен?
Re: Так всётаки как мне сделать хитрющее перенаправление почты?
Добавлено: 2009-02-27 11:10:10
bobot
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
Re: Так всётаки как мне сделать хитрющее перенаправление почты?
Добавлено: 2009-02-27 11:55:37
flot
В какое место вы вставляете добавление? Нужно в самый конец секции роутеров. Еще можно попробовать * заменить на домен, для которого должно работать перенаправление.
Re: Так всётаки как мне сделать хитрющее перенаправление почты?
Добавлено: 2009-02-27 11:59:49
bobot
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
Re: Так всётаки как мне сделать хитрющее перенаправление почты?
Добавлено: 2009-02-27 12:57:38
flot
Роутеры по порядку работают, вставляя в начало вы всю почту вообще кидаете на сервер2.
Вам же не это надо?
Re: Так всётаки как мне сделать хитрющее перенаправление почты?
Добавлено: 2009-02-27 13:00:38
dikens3
flot писал(а):Роутеры по порядку работают, вставляя в начало вы всю почту вообще кидаете на сервер2.
Вам же не это надо?
Ему надо чтобы кто-то за него проблемы решал, и с этой целью он создаёт одни и те же топики.
http://forum.lissyara.su/viewtopic.php?f=20&t=15527
Re: Так всётаки как мне сделать хитрющее перенаправление почты?
Добавлено: 2009-02-27 13:11:27
bobot
flot писал(а):В какое место вы вставляете добавление? Нужно в самый конец секции роутеров. Еще можно попробовать * заменить на домен, для которого должно работать перенаправление.
Ага понял! но как же быть с этой проблемой которая возникла в следствии первой)
Я помоему писал вверху! Обнаружился факт что почта на сервер 2 не доставляется если я отправляю с сервера1 а на любые другие домена достовляется! А если я со второго сервака посылаю на первый то всё нормально читается сервером1 ! в логах пишет типа нету такого хоста как сервер2 но он же есть?(и работает вот уже много лет)

Re: Так всётаки как мне сделать хитрющее перенаправление почты?
Добавлено: 2009-02-27 13:35:18
flot
Так повторите эксперимент вставив роутер unknown в конец.
Кстати я согласен с dikens3 что не следует плодить кучу тем в форуме.
Биться головой о стену вам точно не поможет. А поможет внимательно посмотреть конфиг и логи. Можно запустить exim с отладкой и посмотреть путь почтового сообщения. Еще полезно документацию почитать по тем командам, которые вы используете.
Re: Так всётаки как мне сделать хитрющее перенаправление почты?
Добавлено: 2009-02-27 14:11:02
bobot
flot писал(а):Так повторите эксперимент вставив роутер unknown в конец.
Кстати я согласен с dikens3 что не следует плодить кучу тем в форуме.
Биться головой о стену вам точно не поможет. А поможет внимательно посмотреть конфиг и логи. Можно запустить exim с отладкой и посмотреть путь почтового сообщения. Еще полезно документацию почитать по тем командам, которые вы используете.
не я имею ввиду что даже без этой вставки exim не ложит именно на домен сервер2 почту! а на все остальные ложит
Re: Так всётаки как мне сделать хитрющее перенаправление почты?
Добавлено: 2009-02-27 15:59:27
bobot
bobot писал(а):flot писал(а):Так повторите эксперимент вставив роутер unknown в конец.
Кстати я согласен с dikens3 что не следует плодить кучу тем в форуме.
Биться головой о стену вам точно не поможет. А поможет внимательно посмотреть конфиг и логи. Можно запустить exim с отладкой и посмотреть путь почтового сообщения. Еще полезно документацию почитать по тем командам, которые вы используете.
не я имею ввиду что даже без этой вставки exim не ложит именно на домен сервер2 почту! а на все остальные ложит
Как посмотреть путь почтового сообщения? вот читал по exim полезные команды
http://www.opennet.ru/base/net/exim_options.txt.html но там что то я такого не нахожу и в нэте тоже всё стандартно как там в этой статье
Re: Так всётаки как мне сделать хитрющее перенаправление почты?
Добавлено: 2009-02-27 16:00:40
bobot
flot писал(а):Так повторите эксперимент вставив роутер unknown в конец.
Кстати я согласен с dikens3 что не следует плодить кучу тем в форуме.
Биться головой о стену вам точно не поможет. А поможет внимательно посмотреть конфиг и логи. Можно запустить exim с отладкой и посмотреть путь почтового сообщения. Еще полезно документацию почитать по тем командам, которые вы используете.
Как посмотреть путь почтового сообщения? вот читал по exim полезные команды
http://www.opennet.ru/base/net/exim_options.txt.html но там что то я такого не нахожу и в нэте тоже всё стандартно как там в этой статье