Решено: Exim дублирование $Sender_adress

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

CheGevara80
Сообщения: 85
ОС: aasp

Решено: Exim дублирование $Sender_adress

Сообщение CheGevara80 »

Настроил связку Exim+Dovecot+Mysql, не много переделал по себя конфиги добытые в инете, короче проблема такая локальный адрес отправителя локального дублируется доменом, т.е. test@exam.com@exam.com. Аутификацию в клиентских прогах хочу именно сделать по пользователю, без домена, но что бы письма скалдывались именно вот так /mail/%d/%n, т.к. сервак будет обсуживать несколько доменов.

Вот что в mysql:
username password name maildir quota domain created modified active
test ******* /mail/%d/%n 0 exam.com 0000-00-00 00:00:00 0000-00-00 00:00:00 1

Вот конфиг exima:

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

primary_hostname = exam.com
hide mysql_servers = localhost/exim/root/******
domainlist local_domains = @ : localhost : localhost.localdomain : exam.com
domainlist relay_to_domains =
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_helo = acl_check_helo
acl_smtp_data = acl_check_data
acl_smtp_mime = acl_check_mime
acl_smtp_mail = acl_check_mail

av_scanner = clamd: /var/run/clamav/clamd

MAIN_TLS_ENABLE='true'
LOCAL_DELIVERY=dovecot_lda
tls_advertise_hosts = *
tls_certificate = /etc/exim4/exim.crt
tls_privatekey = /etc/exim4/exim.key
daemon_smtp_ports = 25
tls_on_connect_ports = 465
never_users = root
rfc1413_query_timeout = 0s
timeout_frozen_after = 15d
freeze_tell = admin@exam.com
helo_accept_junk_hosts = 192.168.0.0/24
auto_thaw = 1h
smtp_banner = "$primary_hostame, ESMTP EXIM "
smtp_accept_max = 50
smtp_accept_max_per_connection = 25

helo_allow_chars = _
ignore_bounce_errors_after = 2d
log_selector =  \
        +address_rewrite \
        +all_parents \
        +arguments \
        +connection_reject \
        +delay_delivery \
        +delivery_size \
        +dnslist_defer \
        +incoming_interface \
        +incoming_port \
        +lost_incoming_connection \
        +queue_run \
        +received_sender \
        +received_recipients \
        +retry_defer \
        +sender_on_delivery \
        +size_reject \
        +skip_delivery \
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  local_parts   = postmaster
          domains       = +local_domains



  accept  hosts         = +relay_from_hosts
          control       = submission

  accept  authenticated = *
          control       = submission

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

    deny    message       = "Ваш хост в блэклисте - $dnslist_domain"
            dnslists      =  bl.spamcop.net : dnsbl.sorbs.net

    warn    dnslists      =  bl.spamcop.net : dnsbl.sorbs.net
            add_header    = X-Warning: $sender_host_address is in a black list at $dnslist_domain
            log_message   = found in $dnslist_domain


  accept

acl_check_data:
    deny message         = This message is a virus: ($malware_name)
          demime       = *
          malware      = *

   accept

acl_check_mime:

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

  accept


acl_check_mail:

    accept  condition = ${if eq{${lc:$authenticated_id}}{${lc:$sender_address}}{yes}{no}}
            sender_domains = +local_domains
             authenticated = *



  accept verify        = sender
       sender_domains = !+local_domains
       !authenticated = *



    deny  message = deny this email $sender_address_local_part
          log_message = deny this email $value

begin routers
dovecot_user:
  driver = accept
condition = ${if eq{} {${lookup mysql{SELECT quota FROM mailbox \
        WHERE username='${local_part}' AND domain='${domain}' \
        AND active='1'}}}{no}{yes}}
  transport = dovecot_delivery


remote_systems:
  debug_print = "R: remote transport for $local_part@$domain"
  driver = dnslookup
  domains = ! +local_domains
  transport = remote_smtp
  same_domain_copy_routing = yes
  ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8 : 192.168.0.0/24 :\
                        192.168.100.0/24 :  255.255.255.255
  cannot_route_message = Facken Ched
  no_more

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

userforward:
  driver = redirect
  check_local_user
  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


begin transports

dovecot_delivery:
  driver = pipe
  command = /usr/lib/dovecot/deliver -d $local_part@$domain
  message_prefix =
  message_suffix =
  delivery_date_add
  envelope_to_add
  return_path_add
  log_output
  user = Debian-exim

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_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
  server_set_id = $auth1

dovecot_plain:
  driver = dovecot
  public_name = PLAIN
  server_socket = /var/run/dovecot/auth-client
  server_set_id = $auth1


В логах выглядит вот так:
2009-09-09 17:16:24 1MlN28-00050x-Mo <= "test@exam.com"@exam.com H=exam.com (admpc) [192.168.0.100]:2837 I=[192.168.0.16]:25$
2009-09-09 17:16:24 SMTP connection from admpc.exam.com (admpc) [192.168.0.100]:2837 I=[192.168.0.16]:25 closed by QUIT
2009-09-09 17:16:24 cwd=/var/spool/exim4 3 args: /usr/sbin/exim4 -Mc 1MlN28-00050x-Mo
2009-09-09 17:16:24 1MlN28-00050x-Mo => test <test@exam.com> F=<"test@exam.com"@exam.com> R=dovecot_user T=dovecot_delivery$
2009-09-09 17:16:24 1MlN28-00050x-Mo Completed

Соответственно некоторые сервера дают отлуп на такой адрес.
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: Решено: Exim дублирование $Sender_adress

Сообщение IMB »

Не вижу вопроса и, если не затруднит, оформите листинг с применением тега codebox.
Спасибо сказали:
CheGevara80
Сообщения: 85
ОС: aasp

Re: Решено: Exim дублирование $Sender_adress

Сообщение CheGevara80 »

Вопрос в следущем, как сделать что $Sender_adress была в нормальном виде, test@exam.com?

Код:

primary_hostname = exam.com hide mysql_servers = localhost/exim/root/****** domainlist local_domains = @ : localhost : localhost.localdomain : exam.com domainlist relay_to_domains = acl_smtp_rcpt = acl_check_rcpt acl_smtp_helo = acl_check_helo acl_smtp_data = acl_check_data acl_smtp_mime = acl_check_mime acl_smtp_mail = acl_check_mail av_scanner = clamd: /var/run/clamav/clamd MAIN_TLS_ENABLE='true' LOCAL_DELIVERY=dovecot_lda tls_advertise_hosts = * tls_certificate = /etc/exim4/exim.crt tls_privatekey = /etc/exim4/exim.key daemon_smtp_ports = 25 tls_on_connect_ports = 465 never_users = root rfc1413_query_timeout = 0s timeout_frozen_after = 15d freeze_tell = admin@exam.com helo_accept_junk_hosts = 192.168.0.0/24 auto_thaw = 1h smtp_banner = "$primary_hostame, ESMTP EXIM " smtp_accept_max = 50 smtp_accept_max_per_connection = 25 helo_allow_chars = _ ignore_bounce_errors_after = 2d log_selector = \ +address_rewrite \ +all_parents \ +arguments \ +connection_reject \ +delay_delivery \ +delivery_size \ +dnslist_defer \ +incoming_interface \ +incoming_port \ +lost_incoming_connection \ +queue_run \ +received_sender \ +received_recipients \ +retry_defer \ +sender_on_delivery \ +size_reject \ +skip_delivery \ 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 local_parts = postmaster domains = +local_domains accept hosts = +relay_from_hosts control = submission accept authenticated = * control = submission require message = relay not permitted domains = +local_domains : +relay_to_domains deny message = "Ваш хост в блэклисте - $dnslist_domain" dnslists = bl.spamcop.net : dnsbl.sorbs.net warn dnslists = bl.spamcop.net : dnsbl.sorbs.net add_header = X-Warning: $sender_host_address is in a black list at $dnslist_domain log_message = found in $dnslist_domain accept acl_check_data: deny message = This message is a virus: ($malware_name) demime = * malware = * accept acl_check_mime: deny message = Blacklisted file extension detected condition = ${if match \ {${lc:$mime_filename}} \ {\N(\.exe|\.pif|\.bat|\.scr|\.lnk|\.com)$\N} \ {1}{0}} accept acl_check_mail: accept condition = ${if eq{${lc:$authenticated_id}}{${lc:$sender_address}}{yes}{no}} sender_domains = +local_domains authenticated = * accept verify = sender sender_domains = !+local_domains !authenticated = * deny message = deny this email $sender_address_local_part log_message = deny this email $value begin routers dovecot_user: driver = accept condition = ${if eq{} {${lookup mysql{SELECT quota FROM mailbox \ WHERE username='${local_part}' AND domain='${domain}' \ AND active='1'}}}{no}{yes}} transport = dovecot_delivery remote_systems: debug_print = "R: remote transport for $local_part@$domain" driver = dnslookup domains = ! +local_domains transport = remote_smtp same_domain_copy_routing = yes ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8 : 192.168.0.0/24 :\ 192.168.100.0/24 : 255.255.255.255 cannot_route_message = Facken Ched no_more system_aliases: driver = redirect allow_fail allow_defer data = ${lookup{$local_part}lsearch{/etc/aliases}} file_transport = address_file pipe_transport = address_pipe userforward: driver = redirect check_local_user 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 begin transports dovecot_delivery: driver = pipe command = /usr/lib/dovecot/deliver -d $local_part@$domain message_prefix = message_suffix = delivery_date_add envelope_to_add return_path_add log_output user = Debian-exim 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_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 server_set_id = $auth1 dovecot_plain: driver = dovecot public_name = PLAIN server_socket = /var/run/dovecot/auth-client server_set_id = $auth1
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: Решено: Exim дублирование $Sender_adress

Сообщение IMB »

CheGevara80 писал(а):
09.09.2009 17:45
Вопрос в следущем, как сделать что $Sender_adress была в нормальном виде, test@exam.com?

Простите, а где у Вас это не в нормальном?
И кстати, Вас не смущает это:

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

local_delivery:
driver = appendfile
file = /var/mail/$local_part
..............

Получается, что письма складываются в /var/mail/vasya.
Честно говоря какой-то сумбурный конфиг, в частности - зачем Вам dovecot-delivery и local-delivery?
Аутификацию в клиентских прогах хочу именно сделать по пользователю, без домена, но что бы письма скалдывались именно вот так /mail/%d/%n, т.к. сервак будет обсуживать несколько доменов.

Слабо себе это представляю. При этом вопрос не в том, как раскладывать. Это решается запросами, хотя, на мой взгляд и лишняя работа. Вопрос в том, как Вы собираетесь авторизовывать клиентов. Представте, у Вас ест два домена - example.ru и example.com. Пользователь Vasya имеет два адреса - vasya@example.ru и, соответствено vasya@example.com. Васин почтовик передает, как Вы хотите, имя vasya и клиент удачно авторизуется только при условии если Вы проверите переданный пароль по ВСЕМ vasya@ваши_домены. А если эти vasya@ принадлежат разным людям? Вот радости кому-то будет. Ну ладно если у Вас два-три домена и не очень много пользователей, а если нет... Да даже в простейшем случае это лишняя работа для Вас.
Спасибо сказали:
CheGevara80
Сообщения: 85
ОС: aasp

Re: Решено: Exim дублирование $Sender_adress

Сообщение CheGevara80 »

Простите, а где у Вас это не в нормальном?

В первом посте я описал.
В логах выглядит вот так:
2009-09-09 17:16:24 1MlN28-00050x-Mo <= "test@exam.com"@exam.com H=exam.com (admpc) [192.168.0.100]:2837 I=[192.168.0.16]:25$
2009-09-09 17:16:24 SMTP connection from admpc.exam.com (admpc) [192.168.0.100]:2837 I=[192.168.0.16]:25 closed by QUIT
2009-09-09 17:16:24 cwd=/var/spool/exim4 3 args: /usr/sbin/exim4 -Mc 1MlN28-00050x-Mo
2009-09-09 17:16:24 1MlN28-00050x-Mo => test <test@exam.com> F=<"test@exam.com"@exam.com> R=dovecot_user T=dovecot_delivery$
2009-09-09 17:16:24 1MlN28-00050x-Mo Completed

Соответственно некоторые сервера дают отлуп на такой адрес.


Честно говоря какой-то сумбурный конфиг, в частности - зачем Вам dovecot-delivery и local-delivery?

Local-delivery, считайте что нету, просто забыл убрать, хотя он мне и не мешает.

Слабо себе это представляю.

Я это себе представляю вот так:
exam1.com 100 юзеров
exam2.com 20 юзеров

vasya@exam1.com один юзер

sasha@exam2.com второй юзер, но ему нужно и почта sasha@exam1.com
делаю это с помощью обычного алиаса:
sasha@exam2.com : sasha@exam1.com

Почта сохраняется в разные дирректории(для наглядности) /mail/%d/%n

А если эти vasya@ принадлежат разным людям?

Такое я не допущу!
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: Решено: Exim дублирование $Sender_adress

Сообщение IMB »

CheGevara80 писал(а):
09.09.2009 22:03
2009-09-09 17:16:24 1MlN28-00050x-Mo <= "test@exam.com"@exam.com H=exam.com (admpc) [192.168.0.100]:2837 I=[192.168.0.16]:25$
2009-09-09 17:16:24 SMTP connection from admpc.exam.com (admpc) [192.168.0.100]:2837 I=[192.168.0.16]:25 closed by QUIT
2009-09-09 17:16:24 cwd=/var/spool/exim4 3 args: /usr/sbin/exim4 -Mc 1MlN28-00050x-Mo
2009-09-09 17:16:24 1MlN28-00050x-Mo => test <test@exam.com> F=<"test@exam.com"@exam.com> R=dovecot_user T=dovecot_delivery$
2009-09-09 17:16:24 1MlN28-00050x-Mo Completed

Вы говорите о выделенном участке? Уверены что так не посылает клиент?
При работающем tail -f /var/log/exim4/mainlog попробуйте отослать письмо через telnet.

P.S. Хороший метод отладки скрипт для тестирования работы Exim4
Спасибо сказали:
CheGevara80
Сообщения: 85
ОС: aasp

Re: Решено: Exim дублирование $Sender_adress

Сообщение CheGevara80 »

Проблему решил, вот ответ http://forum.lissyara.su/viewtopic.php?f=2...n/sender_retain
Спасибо сказали: