Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» FAQ по Exim MTA #2

Автор: Alukardd
Дата сообщения: 23.03.2012 14:12
shadowmaster63
Нету вариантов, вам нужно реализовать все перечисленный пункты. Точнее первый можно исключить, я в него не верю.
А зачем Вам упомянутые утилиты?
Автор: shadowmaster63
Дата сообщения: 23.03.2012 16:45
echo -n ginger@example.ru | mimencode -b

вот для этого... для эмуляции отправки писем через оутлюк....

Проблема в том что у меня почта принимается от всех и ото вся, с этим проблем нет.
Например с яндекса и мэйла я могу отправить себе письмо на почтовый ящик сервера и экзим его успешно пропустит.

НО отправить письмо с почтового ящика моего домена можно только через консоль сервера либо через веб интерфейс расположенный на этом сервере, подключиться же к серверу через оутлюк не составит труда но вот отправить через него письмо не получится экзим его реджектит
По самому последнему deny.. так как оно каким тообразом не подходит ни под одно из правил.. конфиг я приводил ранее....
Автор: dogaev
Дата сообщения: 09.04.2012 02:02

подскажите

как отключить проверку отправителя
а то идет ошибка "Sender Verify Failed"

только для некоторых локальных ящиков
с которых письма должны только уходить

пробовал дописать

drop message = Rejected - Sender Verify Failed
log_message = Rejected - Sender Verify Failed
hosts = *
!senders = postmaster@ttttt.com
!verify = sender/no_details/callout=2m,defer_ok
!condition = ${if eq{$sender_verify_failure}{}}

но все равно ошибка

Delay 0s for localhost [127.0.0.1] with HELO=ddddd.ru. Mail from postmaster@ttttt.com to ***@mail.ru.
H=localhost (ddddd.ru) [127.0.0.1] sender verify fail for <postmaster@ttttt.com>: Relay access denied
H=localhost (ddddd.ru) [127.0.0.1] F=<postmaster@ttttt.com> rejected RCPT <***@mail.ru>: Sender verify failed

Автор: vlary
Дата сообщения: 09.04.2012 10:29
dogaev Создай список нужных тебе юзверей, которые должны проходить без проверки и помести правило в acl_smtp_mail выше, чем verify:

Код: accept
domains = +your_domains
local_parts = ${lookup{$sender_address_local_part}lsearch{/some/file}{$value}fail}
Автор: dogaev
Дата сообщения: 10.04.2012 21:44
vlary
благодарю за ответ

нашел ключевой момент - мешавший всем моим попыткам
require verify = sender
это надо было закоментировать

если эта строка разрешена то по любому идет
Sender verify failed
Автор: ppppooooo
Дата сообщения: 18.05.2012 20:54
Пытался перенастроить exim 4.54 на прослушивание ip , не совпадающего с localhost. Но ничего не получилось:

- local_interfaces из конфига exim при запуске не распознает;

- при запуске exim с опцией -oX опция не распознается.


Может , что подскажете ! Заранее благодарен.
Автор: Alukardd
Дата сообщения: 18.05.2012 22:37
ppppooooo
exim по умолчанию слушает все IPv4 адреса.

На всякий случай, если Вы хз откуда брали инфу, то следует изучить оф. доку.
Автор: vlary
Дата сообщения: 18.05.2012 22:57
ppppooooo
Цитата:
Пытался перенастроить exim 4.54
У Exim давно уже версия 4.77. И похоже, у тебя еще и криво собранный, ибо по умолчанию он должен слушать на всех интерфейсах, а local_interfaces используется только тогда, когда нужно огранчиться конкретным айпи.
Обновляй Exim и не морочь людям голову!
Автор: Alukardd
Дата сообщения: 18.05.2012 23:00
Гык, прикольно, exim в G+ страничку имеют, и она даже живая, и вчера и позавчера посты есть...
Автор: aleksander_2005
Дата сообщения: 28.05.2012 10:38
Ребята подскажите как правильно и где прописать правила пересылки.
Как сделанно.
Все пользователи@domain.com шлют почту через Релей провайдера.
Хочется так
Все пользователи@domain.com шлют почту через Релей провайдера но пользователь1@domain.com шлет почту напрямую минуя релей провайдера.
Автор: vlary
Дата сообщения: 28.05.2012 12:01
aleksander_2005
Цитата:
как правильно и где прописать правила пересылки.
Через роутер попробуй

Код: domainlist local_domains = @ : domain.com
...............
begin routers
.............
dnslookup:
driver = dnslookup
senders = пользователь1@domain.com
domains = ! +local_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
no_more
.........

begin transports

remote_smtp:
driver = smtp
Автор: aleksander_2005
Дата сообщения: 28.05.2012 12:46
Спасибо.
На данный момент у меня такой конфиг
smart_relay:
driver = manualroute
domains = ! +local_domains
transport = remote_smtp
route_data = 7777777777
no_more
no_verify_sender
#**************************************************


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
data = ${lookup{$local_part}lsearch{/etc/aliases}}
user = mailnull
group = mail
file_transport = address_file
pipe_transport = address_pipe
allow_fail
allow_defer

# локальные пользователи
localuser:
driver = accept
check_local_user
transport = local_delivery
cannot_route_message = Unknown user

Собственно я так понял сюда просо дописать

begin routers
.............
dnslookup:
driver = dnslookup
senders = пользователь1@domain.com
domains = ! +local_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
no_more
.........

begin transports

remote_smtp:
driver = smtp

Верно ?

Автор: vlary
Дата сообщения: 28.05.2012 13:32
aleksander_2005
Цитата:
Верно ?
Так проверяй. Рестартуй эксим, делай пробную отправку и смотри по логам. Или сделай отладку с помощью exim -bh.
Автор: Alukardd
Дата сообщения: 28.05.2012 14:53
aleksander_2005
Только транспортов и маршрутов у Вас там небось и так с десяток. Так что это явно не весь конфиг...
Автор: batonser
Дата сообщения: 07.06.2012 14:42
Добрый День господа!

помогите разобраться, через нас пытаются слать спам. почитав тут на форуме статьи я наткнулся на такую команду как exim -bh
может кто объяснить результат вывода этой команды

______________________________
mail# exim -bh 77.222.40.153

**** SMTP testing session as if from host 77.222.40.153
**** but without any ident (RFC 1413) callback.
**** This is not for real!

>>> host in hosts_connection_nolog? no (option unset)
LOG: [90401] SMTP connection from [77.222.40.153]
>>> host in host_lookup? no (option unset)
>>> host in host_reject_connection? no (option unset)
>>> host in sender_unqualified_hosts? no (option unset)
>>> gethostbyname looked up these IP addresses:
>>> name=localhost address=127.0.0.1
>>> host in "localhost:127.0.0.1/8 : 10.10.0.0/16"? no (end of list)
>>> host in recipient_unqualified_hosts? no (end of list)
>>> host in helo_verify_hosts? no (option unset)
>>> host in helo_try_verify_hosts? no (option unset)
>>> host in helo_accept_junk_hosts? yes (matched "*")
220 ххх.kz, ESMTP EXIM 4.72
LOG: [90401] SMTP command timeout on connection from [77.222.40.153]
421 ххх.kz: SMTP command timeout - closing connection

______________________________
ПРосьба сильно не ругать, я только учусь этому всему )
Автор: AkeHayc
Дата сообщения: 07.06.2012 15:21
Ребята, посмотрите пожалуйста на конфиг exim.conf, есть ли там ошибки?
[more=конфиг exim.conf]primary_hostname = mx.point.kz
hide mysql_servers = localhost/vexim/vexim/password
domainlist local_domains = ${lookup mysql{SELECT `domain` \
FROM `domain` WHERE \
`domain`='${quote_mysql:$domain}' AND \
`active`='1'}}
domainlist relay_to_domains = ${lookup mysql{SELECT `domain` \
FROM `domain` WHERE \
`domain`='${quote_mysql:$domain}' AND \
`active`='1'}}
hostlist relay_from_hosts = localhost:127.0.0.0/8:192.168.50.0/24 #add the hosts from which you allow relaying here
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data
av_scanner = clamd:/var/run/clamav/clamd.socket
# spamd_address = 127.0.0.1 783
qualify_domain = point.kz
qualify_recipient = point.kz
allow_domain_literals = false
exim_user = exim
exim_group = exim
never_users = root
rfc1413_query_timeout = 0s
sender_unqualified_hosts = +relay_from_hosts
recipient_unqualified_hosts = +relay_from_hosts
ignore_bounce_errors_after = 45m
timeout_frozen_after = 15d
helo_accept_junk_hosts = 192.168.50.0/24
auto_thaw = 1h
smtp_banner = "$primary_hostname, ESMTP EXIM $version_number"
smtp_accept_max = 50
smtp_accept_max_per_connection = 25
smtp_connect_backlog = 30
smtp_accept_max_per_host = 20
split_spool_directory = true
remote_max_parallel = 15
return_size_limit = 70k
message_size_limit = 64M
helo_allow_chars = _
smtp_enforce_sync = true
log_selector = \
+all_parents \
+connection_reject \
+incoming_interface \
+lost_incoming_connection \
+received_sender \
+received_recipients \
+smtp_confirmation \
+smtp_syntax_error \
+smtp_protocol_error \
-queue_run
syslog_timestamp = no
begin acl
acl_check_rcpt:
accept hosts = :
deny message = "incorrect symbol in address"
domains = +local_domains
local_parts = ^[.] : ^.*[@%!/|]
deny message = "incorrect symbol in address"
domains = !+local_domains
local_parts = ^[./|] : ^.*[@%!] : ^.*/\\.\\./
accept local_parts = postmaster
domains = +local_domains
deny message = "HELO/EHLO required by SMTP RFC"
condition = ${if eq{$sender_helo_name}{}{yes}{no}}
accept authenticated = *
deny message = "Your IP in HELO - access denied!"
hosts = * : !+relay_from_hosts : !81-196.point.kz
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 = "My IP in your HELO! Access denied!"
deny condition = ${if match{$sender_helo_name}\
{\N^\d+$\N}{yes}{no}}
hosts = !127.0.0.1 : !localhost : *
message = "Incorrect HELO string"
# filter spammers from dynamic ips
deny message = "your hostname is bad (adsl, poll, ppp & etc)."
condition = ${if match{$sender_host_name} \
{adsl|dialup|pool|peer|dhcp} \
{yes}{no}}
warn
set acl_m0 = 30s
warn
hosts = +relay_from_hosts:4.3.2.1/32:192.168.50.0/24 #disable waits for 'friendly' hosts
set acl_m0 = 0s
warn
logwrite = Delay $acl_m0 for $sender_host_name \
[$sender_host_address] with HELO=$sender_helo_name. Mail \
from $sender_address to $local_part@$domain.
delay = $acl_m0
accept domains = +local_domains
endpass
message = "No such user"
verify = recipient
accept domains = +relay_to_domains
endpass
message = "i don't know how to relay to this address"
verify = recipient
# deny message = "you in blacklist - $dnslist_domain \n $dnslist_text"
# dnslists = opm.blitzed.org : \
# cbl.abuseat.org : \
# bl.csma.biz
accept hosts = +relay_from_hosts
deny message = "Homo hominus lupus est"
acl_check_data:
# check for viruses
deny malware = *
message = "Your message contains viruses: $malware_name"
# if needed - add spam filtering here
# permit everything else
accept
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 `goto` FROM `alias` WHERE \
`address`='${quote_mysql:$local_part@$domain}' OR \
`address`='${quote_mysql:@$domain}'}}
dovecot_user:
driver = accept
condition = ${lookup mysql{SELECT `goto` FROM \
`alias` WHERE \
`address`='${quote_mysql:$local_part@$domain}' OR \
`address`='${quote_mysql:@$domain}'}{yes}{no}}
transport = dovecot_delivery
begin transports
remote_smtp:
driver = smtp
interface = 4.3.2.1 #your public ip address, if it's the main server ip - you could skip this parameter. if it's an alias- it must be specified in clear
dovecot_delivery:
driver = pipe
command = /usr/libexec/dovecot/deliver -d $local_part@$domain
message_prefix =
message_suffix =
delivery_date_add
envelope_to_add
return_path_add
log_output
user = exim
address_pipe:
driver = pipe
return_output
address_reply:
driver = autoreply
begin retry
* * F,2h,15m; G,16h,1h,1.5; F,4d,6h
begin rewrite
begin authenticators
auth_plain:
driver = plaintext
public_name = PLAIN
server_condition = ${lookup mysql{SELECT `username` FROM \
`mailbox` WHERE `username` = \
'${quote_mysql:$auth2}' AND `password` = \
'${quote_mysql:$auth3}'}{yes}{no}}
server_prompts = :
server_set_id = $auth2
auth_login:
driver = plaintext
public_name = LOGIN
server_condition = ${lookup mysql{SELECT `username` FROM \
`mailbox` WHERE `username` = \
'${quote_mysql:$auth1}' AND `password` = \
'${quote_mysql:$auth2}'}{yes}{no}}
server_prompts = Username:: : Password::
server_set_id = $auth1
auth_cram_md5:
driver = cram_md5
public_name = CRAM-MD5
server_secret = ${lookup mysql{SELECT `password` FROM \
`mailbox` WHERE `username` \
= '${quote_mysql:$auth1}'}{$value}fail}
server_set_id = $auth2

[/more]
Заранее спасибо!
Автор: vlary
Дата сообщения: 07.06.2012 16:20
AkeHayc Запусти exim из командной строки
exim -C /path/tonew/exim.conf -bV
и он сам проверит. правильный конфиг или нет.
А дабы посмотреть, что и как, сделай фиктивную сессию (айпи клиента Х.Х.Х.Х выбери из лога)
exim -C /path/tonew/exim.conf -bh Х.Х.Х.Х
Если что не так, тогда спрашивай конкретно, ибо никто с лупой твой конфиг изучать не будет.
Автор: Luterios
Дата сообщения: 02.07.2012 11:48
Добрый день! Возможно где-то уже есть ответ и я его упустил перечитывая сотни страниц... подскажите пожалуйста решение моей проблемы. Для начала опишу систему - в офисе стоит сервер exchange, внутри сети около 15 пользователей, у всех в обязательном порядке добровольно-принудительно раз в 3 месяца меняется пароль. Почта проходит через VPS, на котором стоит exim 4.77. Вся почта со всех пользователей идет через 1 почтовый ящик в котором пароль не меняется. Проблема в том что письма доходят по типу "соединительный@почтовый.ящик; от имени; Пользователь такой-то [ почта_пользователя@почтовый.ящик ]", при этом в теле письма для таких параметров - From, Return-path и Sender пишется соединительный@почтовый.ящик, а хотелось бы чтоб везде прописывался только почтовый адрес пользователя. Раньше мы слали почту через хостера, известно что у хостера так же стоит exim 4.77, когда слали почту через него, таким же методом, почта доставлялась от имени пользователя, а не соединительного почтового ящика...

Сам я в этом мало понимаю, надеюсь на Вашу помощь.

[more=config]VIRUS_SCAN = yes
POSTGREY_SOCKET = inet:127.0.0.1:10023
FREEBSD = yes
SPAMCBIN=__ISP_SPAMCBIN__
EXIMBIN=/usr/local/sbin/exim
log_selector = \
+all_parents \
+lost_incoming_connection \
+received_sender \
+received_recipients \
+tls_cipher +tls_peerdn \
+smtp_confirmation \
+smtp_syntax_error \
+smtp_protocol_error

# CONFDIR=__ISP_CONFDIR__
# daemon_smtp_port = 25:465
# tls_certificate = CONFDIR/certificate.crt
# tls_privatekey = CONFDIR/certificate.key
# tls_advertise_hosts = *
tls_on_connect_ports = 465

.ifdef MAILMAN_ENABLE
MAILMAN_HOME=__MAILMAN_HOME__
MAILMAN_WRAP=__MAILMAN_WRAP__
MAILMAN_USER=__MAILMAN_USER__
MAILMAN_GROUP=__MAILMAN_GROUP__
.endif

trusted_groups = mgrsecure
trusted_users = www

domainlist local_domains = lsearch;/usr/local/etc/exim/domains
domainlist dummy_domains =
hostlist relay_from_hosts = 127.0.0.1 : ::::1

domainlist relay_to_domains = lsearch;/usr/local/etc/exim/domains
exim_user = mailnull
exim_group = mail

never_users = root
host_lookup = *
rfc1413_hosts = *
rfc1413_query_timeout = 0s
ignore_bounce_errors_after = 2d
timeout_frozen_after = 7d
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data

begin acl
    acl_check_rcpt:
        accept    hosts = net-lsearch;/usr/local/etc/exim/whitelist
        
        deny    hosts = net-lsearch;/usr/local/etc/exim/blacklist
                message = $host_data

        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
                verify = recipient
                domains = +local_domains

        require verify = sender

        accept authenticated = *
                condition = ${if eq{${extract{5}{:}{${lookup{$authenticated_id}lsearch{/usr/local/etc/exim/passwd}}}}}{no} {yes}{no}}
                condition = ${if eq{${extract{3}{:}{${lookup{${domain:$authenticated_id}}lsearch{/usr/local/etc/exim/domains}}}}}{no} {yes}{no}}
                control = submission/domain=

        accept hosts = +relay_from_hosts
                control = submission

        deny    message = rejected because $sender_host_address is in a black list at $dnslist_domain\\n$dnslist_text
                dnslists = ${readfile {/usr/local/etc/exim/dnsblists}{:}}

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

        require verify = recipient

.ifdef POSTGREY_SOCKET
        defer log_message = greylisted host $sender_host_address
            set acl_m0 = request=smtpd_access_policy\nprotocol_state=RCPT\nprotocol_name=${uc:$received_protocol}\nhelo_name=$sender_helo_name\nclient_address=$sender_host_address\nclient_name=$sender_host_name\nsender=$sender_address\nrecipient=$local_part@$domain\ninstance=$sender_host_address/$sender_address/$local_part@$domain\n\n
            set acl_m0 = ${sg{${readsocket{POSTGREY_SOCKET}{$acl_m0}{5s}{}{action=DUNNO}}}{action=}{}}
            message = ${sg{$acl_m0}{^\\w+\\s*}{}}
            condition = ${if eq{${uc:${substr{0}{5}{$acl_m0}}}}{DEFER}{true}{false}}
.endif

        accept

    acl_check_data:
        accept

begin routers
    dnslookup:
        driver = dnslookup
        domains = !+dummy_domains
        transport = remote_smtp
        ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
        self = pass
        same_domain_copy_routing
        rewrite_headers = false
        no_more

    disabled_domains:
        driver = redirect
        condition = ${extract{3}{:}{${lookup{$domain}lsearch{/usr/local/etc/exim/domains}}}}
        allow_fail = yes
        data = :fail: Domain disabled
        no_more

    disabled_users:
        driver = redirect
        condition = ${extract{5}{:}{${lookup{$local_part@$domain}lsearch{/usr/local/etc/exim/passwd}}}}
        allow_fail = yes
        data = :fail: User disabled
        no_more

    local_domains:
        driver = redirect
        data = ${quote_local_part:$local_part}@${extract{1}{:}{${lookup{$domain}lsearch{/usr/local/etc/exim/domains}}}}
        cannot_route_message = Unknown user
        no_more

.ifdef SA_ENABLE
    spamcheck_router:
        no_verify
        condition = "${if and { {!def:h_X-Spam-Flag:} {!eq {$received_protocol}{spam-scanned}}} {1}{0}}"
        driver = accept
        transport = spamcheck
.endif

    group_aliases:
        driver = redirect
        data = ${extract{1}{:}{${lookup{$local_part@$domain}lsearch{/usr/local/etc/exim/aliases}}}}
        condition = ${if and{\
                        {exists{/usr/local/etc/exim/aliases}}\
                        {eq {${extract{2}{:}{${lookup{$local_part@$domain}lsearch{/usr/local/etc/exim/aliases}}}}} {group} }\
                    } {yes} {no} }
        redirect_router = a_dnslookup
        pipe_transport = address_pipe

    aliases:
        driver = redirect
        data = ${extract{1}{:}{${lookup{$local_part@$domain}lsearch{/usr/local/etc/exim/aliases}}}}
        condition = ${if exists{/usr/local/etc/exim/aliases} {yes} {no} }

    aliases_pipe:
driver = redirect
        pipe_transport = address_pipe
        data = ${lookup {$local_part@$domain} lsearch{/usr/local/etc/exim/pipe-aliases}}
condition =${lookup {$local_part@$domain} lsearch{/usr/local/etc/exim/pipe-aliases} {yes} {no} }
                                

    local_users:
        driver = redirect
        condition = ${lookup {$local_part@$domain} lsearch {/usr/local/etc/exim/passwd} {yes} {no} }
        data = $local_part@$domain
        redirect_router = autoreplay

.ifdef MAILMAN_ENABLE
    mailman:
        driver = accept
        require_files = MAILMAN_HOME/lists/$local_part/config.pck
        local_part_suffix_optional
        local_part_suffix = -bounces : -bounces+* : -confirm+* : -join : -leave : -owner : -request : -admin : -subscribe : -unsubscribe
        transport = mailman

    mailman_isp:
        driver = accept
        require_files = MAILMAN_HOME/lists/$local_part-$domain/config.pck
        local_part_suffix_optional
        local_part_suffix = -bounces : -bounces+* : -confirm+* : -join : -leave : -owner : -request : -admin : -subscribe : -unsubscribe
        transport = mailman_isp
.endif

    catchall_for_domains:
        driver = redirect
        headers_add = X-redirected: yes
        data = ${extract{2}{:}{${lookup{$domain}lsearch{/usr/local/etc/exim/domains}}}}
        file_transport = local_delivery

    unknown_users:
        driver = redirect
        allow_fail = yes
        data = :fail: Unknown user
        no_more

    autoreplay:
        driver = accept
        condition = ${if exists{${extract{4}{:}{${lookup{$local_part@$domain}lsearch{/usr/local/etc/exim/passwd}}}}/message.txt} {yes} {no}}
        retry_use_local_part
        transport = address_reply
        unseen

    localuser:
        driver = accept
        transport = local_delivery

# Same routers without autoreplay

    a_dnslookup:
        driver = dnslookup
        domains = !+dummy_domains
        transport = remote_smtp
        ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
        self = pass
        same_domain_copy_routing
        no_more

    a_disabled_domains:
        driver = redirect
        condition = ${extract{3}{:}{${lookup{$domain}lsearch{/usr/local/etc/exim/domains}}}}
        allow_fail = yes
        data = :fail: Domain disabled
        no_more

    a_disabled_users:
        driver = redirect
        condition = ${extract{5}{:}{${lookup{$local_part@$domain}lsearch{/usr/local/etc/exim/passwd}}}}
        allow_fail = yes
        data = :fail: User disabled
        no_more

    a_local_domains:
        driver = redirect
        data = ${quote_local_part:$local_part}@${extract{1}{:}{${lookup{$domain}lsearch{/usr/local/etc/exim/domains}}}}
        cannot_route_message = Unknown user
        redirect_router = a_dnslookup
        no_more

    a_aliases:
        driver = redirect
        data = ${extract{1}{:}{${lookup{$local_part@$domain}lsearch{/usr/local/etc/exim/aliases}}}}
        condition = ${if exists{/usr/local/etc/exim/aliases} {yes} {no} }
        redirect_router = a_dnslookup

    a_aliases_pipe:
        driver = accept
        transport = aliases_pipe
        condition = ${lookup {$local_part@$domain} lsearch {/usr/local/etc/exim/pipe-aliases} {yes} {no} }

    a_local_users:
        driver = accept
        transport = local_delivery
        condition = ${lookup {$local_part@$domain} lsearch {/usr/local/etc/exim/passwd} {yes} {no} }

.ifdef MAILMAN_ENABLE
    a_mailman:
        driver = accept
        require_files = MAILMAN_HOME/lists/$local_part/config.pck
        local_part_suffix_optional
        local_part_suffix = -bounces : -bounces+* : -confirm+* : -join : -leave : -owner : -request : -admin : -subscribe : -unsubscribe
        transport = mailman

    a_mailman_isp:
        driver = accept
        require_files = MAILMAN_HOME/lists/$local_part-$domain/config.pck
        local_part_suffix_optional
        local_part_suffix = -bounces : -bounces+* : -confirm+* : -join : -leave : -owner : -request : -admin : -subscribe : -unsubscribe
        transport = mailman_isp
.endif

    a_catchall_for_domains:
        driver = redirect
        headers_add = X-redirected: yes
        data = ${extract{2}{:}{${lookup{$domain}lsearch{/usr/local/etc/exim/domains}}}}
        file_transport = local_delivery
        redirect_router = a_dnslookup

begin transports
    remote_smtp:
        driver = smtp

    local_delivery:
        driver = appendfile
        file = ${extract{4}{:}{${lookup{$local_part@$domain}lsearch{/usr/local/etc/exim/passwd}}}}/mbox
        delivery_date_add
        envelope_to_add
        return_path_add
        mode = 0660
        quota = ${extract{3}{:}{${lookup{$local_part@$domain}lsearch{/usr/local/etc/exim/passwd}}}}M
        quota_warn_threshold = 75%
        use_lockfile = no
        no_mode_fail_narrower
        user = ${extract{1}{:}{${lookup{$local_part@$domain}lsearch{/usr/local/etc/exim/passwd}}}}
        group = ${extract{2}{:}{${lookup{$local_part@$domain}lsearch{/usr/local/etc/exim/passwd}}}}
                        
    address_pipe:
        driver = pipe
        return_output
                            
    aliases_pipe:
        driver = pipe
        command = ${extract{1}{:}{${lookup{$local_part@$domain}lsearch{/usr/local/etc/exim/pipe-aliases}}}}
        use_shell
                                    
    address_reply:
        driver = autoreply
        headers = ${readfile{${extract{4}{:}{${lookup{$local_part@$domain}lsearch{/usr/local/etc/exim/passwd}}}}/message.txt}}
        to = $sender_address

.ifdef MAILMAN_ENABLE
    mailman_isp:
        driver = pipe
        command = MAILMAN_WRAP '${if def:local_part_suffix {${sg{$local_part_suffix}{-(\\w+)(\\+.*)?}{\$1}}} {post}}' $local_part-$domain
        current_directory = MAILMAN_HOME
        home_directory = MAILMAN_HOME
        user = MAILMAN_USER
        group = MAILMAN_GROUP

    mailman:
        driver = pipe
        command = MAILMAN_WRAP '${if def:local_part_suffix {${sg{$local_part_suffix}{-(\\w+)(\\+.*)?}{\$1}}} {post}}' $local_part
        current_directory = MAILMAN_HOME
        home_directory = MAILMAN_HOME
        user = MAILMAN_USER
        group = MAILMAN_GROUP
.endif

.ifdef SA_ENABLE
    spamcheck:
        debug_print = "T: spamassassin_pipe for $local_part@$domain"
        driver = pipe
        command = EXIMBIN -oMr spam-scanned -bS
        use_bsmtp
        transport_filter = SPAMCBIN
        home_directory = "/tmp"
        current_directory = "/tmp"
        user = mailnull
        group = mail
        return_fail_output
        message_prefix =
        message_suffix =
.endif


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

begin rewrite
.ifdef MAILMAN_ENABLE
    \N^(.*<)?([^<]*)@([^>]*).*$\N "${if exists{MAILMAN_HOME/lists/${sg{$2}{-$3.*}{-$3}}/config.pck} {${sg{$0} {-$3} {}}} {$0} }" S
    \N^(.*<)?([^<]*)@([^>]*).*$\N "${if exists{MAILMAN_HOME/lists/${sg{$2}{-$3.*}{-$3}}/config.pck} {${sg{$0} {-$3} {}}} {$0} }"
.endif

begin authenticators


cram:
driver = cram_md5
public_name = CRAM-MD5
server_secret = ${extract {6} {:} {${lookup{$1}lsearch{/usr/local/etc/exim/passwd}}}}
server_set_id = $1


plain:
driver = plaintext
public_name = PLAIN
server_prompts = :
server_condition = ${if and{{!eq{$3}{}} {eq {$3} {${extract {6} {:} {${lookup{$2}lsearch{/usr/local/etc/exim/passwd}}}}}}} {yes} {no} }
server_set_id = $2

login:
driver = plaintext
public_name = LOGIN
server_prompts = "Username:: : Password::"
server_condition = ${if and{{!eq{$2}{}} {eq {$2} {${extract {6} {:} {${lookup{$1}lsearch{/usr/local/etc/exim/passwd}}}}}}} {yes} {no} }
server_set_id = $1

[/more]
Автор: Luterios
Дата сообщения: 04.07.2012 17:34
есть кто шарит в exim? помогите чайнику!
Автор: GaDiNa
Дата сообщения: 15.08.2012 12:12
всем привет.
прошу объяснить такое поведение:


Код:
[root@mail exim]# grep 1SwLbS-0006ld-KW /var/log/exim/main.log.2

2012-08-01 02:11:55 1SwLbS-0006ld-KW <= zsoloto.vanya@mail.ru H=smtp.zdorofko.com [111.67.198.179]:42727 I=[192.168.0.22]:25 P=esmtp S=12757 id=119240940.20120801906830@mail.ru T="=?Windows-1251?B?z/Do7fbo7/sg6CDvcGHi6OthIPFv5+Rh7ej/IOfg72/s6O1h/vnoePH/IO/wZedl7fLg9ujp?=" from <zsoloto.vanya@mail.ru> for sales@XYZ.com user111@XYZ.com

2012-08-01 02:11:55 cwd=/var/spool/exim 3 args: /usr/sbin/exim -Mc 1SwLbS-0006ld-KW

2012-08-01 02:11:55 1SwLbS-0006ld-KW => /var/spool/mail/XYZ.com/admin/Maildir (admin@XYZ.com, root@mail.XYZ.com, postmaster@mail.XYZ.com) <sales@XYZ.com> F=<zsoloto.vanya@mail.ru> R=virtual_domains T=virtual_delivery S=11830

2012-08-01 02:11:55 1SwLbS-0006ld-KW => /var/spool/mail/XYZ.com/user111/Maildir <user111@XYZ.com> F=<zsoloto.vanya@mail.ru> R=virtual_domains T=virtual_delivery S=11829

2012-08-01 02:11:55 1SwLbS-0006ld-KW Completed
Автор: Alukardd
Дата сообщения: 15.08.2012 12:33
GaDiNa
Вы сами видели это у юзера в MUA или это его слова? Вы открывали письмо на серваке просто в vim'е и смотрели поле To: и Envelope-to: ?
Автор: GaDiNa
Дата сообщения: 15.08.2012 13:51
Alukardd
да и это неоднократно повторяется.

на сервере в файле письма:
в To: адрес первого юзера sales.
а в Envelope-to: - как раз адрес второго юзера user111.


Код:
[root@mail cur]# pwd
/var/spool/mail/XYZ.com/user111/Maildir/cur


[root@mail cur]# cat 1343776315.H258837P26037.mail.XYZ.com\:2\,S
Return-path: <zsoloto.vanya@mail.ru>
Envelope-to: user111@XYZ.com
Received: from smtp.zdorofko.com ([111.67.198.179]:42727)
by mail.XYZ.com with esmtp (Exim 4.63)
(envelope-from <zsoloto.vanya@mail.ru>)
id 1SwLbS-0006ld-KW; Wed, 01 Aug 2012 02:11:55 +0300
Date: Wed, 01 Aug 2012 03:12:30 +0400
From: =?Windows-1251?B?zGFj8uVwIO9w5efl7fLg9ujp?= <zsoloto.vanya@mail.ru>
Reply-To: =?Windows-1251?B?zGFj8uVwIO9w5efl7fLg9ujp?= <zsoloto.vanya@mail.ru>
X-Priority: 3 (Normal)
Message-ID: <119240940.20120801906830@mail.ru>
To: sales@XYZ.com <sales@XYZ.com>
Subject: =?Windows-1251?B?z/Do7fbo7/sg6CDvcGHi6OthIPFv5+Rh7ej/IOfg72/s6O1h/vnoePH/IO/wZedl7fLg9ujp?=
MIME-Version: 1.0
Content-Type: multipart/alternative;
boundary="----------c05496886908832"

------------c05496886908832
Content-Type: text/plain; charset=Windows-1251
Content-Transfer-Encoding: 8bit

Автор: vlary
Дата сообщения: 15.08.2012 14:55
GaDiNa В поле To: обычно стоит адрес, который указал автор письма в его теле (или подставили спам-машина при отправке).
В поле Envelope-to: стоит адрес получателя, принятый вашим сервером от другого сервера или спам-машины по команде RCPT TO:
Логично предположить, что в спам-машину забит алгоритм группировать спам-списки по доменам и менять адрес в поле TO: тела письма одним из адресов домена .
Таким образом, если в списке, скажем, пять ваших юзеров, то будет
пять команд RCPT TO: и одна DATA
Соответственно у всех в поле TO: будет стоять один адрес
Я лично не вижу причины этим заморачиваться

Цитата:
и user111 недоумевает - почему у него спам который направлялся по чужому адресу
Ему будет легче, если там будет стоять его адрес или вообще адрес zsoloto.vanya@mail.ru?
Автор: GaDiNa
Дата сообщения: 15.08.2012 15:22
vlary
спасибо за разъяснение.

меня просто смутила эта строка в логе:

2012-08-01 02:11:55 1SwLbS-0006ld-KW <= zsoloto.vanya@mail.ru H=smtp.zdorofko.com [111.67.198.179]:42727 I=[192.168.0.22]:25 P=esmtp S=12757 id=119240940.20120801906830@mail.ru T="=?Windows-1251?B?z/Do7fbo7/sg6CDvcGHi6OthIPFv5+Rh7ej/IOfg72/s6O1h/vnoePH/IO/wZedl7fLg9ujp?=" from <zsoloto.vanya@mail.ru> for sales@XYZ.com user111@XYZ.com

я сам не мог понять почему у user111 в инбоксе чужое письмо.
ведь для алиаса sales почта должна сыпаться postmaster-у (что и произошло), но никак не для другого адресата в письме..
А получается что в теле письма со спамом параметр To: был прописан жестко и не менялся..
и письма отправлялись ВСЕМ получателям с этим параметром..
Автор: vlary
Дата сообщения: 15.08.2012 17:03
GaDiNa
Цитата:
и письма отправлялись ВСЕМ получателям с этим параметром..
Не вообще ВСЕМ получателям, а ВСЕМ получателям вашего домена.
Дело в том, что во многих спам фильтрах ставят опцию: нет в поле To: местного домена @XYZ.com - письмо в мусор. Вот спамеры и выкручиваются.
Автор: GaDiNa
Дата сообщения: 15.08.2012 17:43
vlary
может я вас не правильно понял, но судя по:
for sales@XYZ.com user111@XYZ.com
этот спам отправился только _двум_ аккаунтам, а не ВСЕМ из моего домена.
или я чегото не вижу и такие спам письма доставляются действительно всем ?

Автор: vlary
Дата сообщения: 15.08.2012 18:15
GaDiNa
Цитата:
может я вас не правильно понял, но судя по
Похоже на то.
У спамеров есть какой-то список, допустим
user1@X12.com
user2@X12.com
user3@X12.com
.........
sales@XYZ.com
user111@XYZ.com
.......
user1@Y12.com
user2@Y12.com
user3@Y12.com
user4@Y12.com
user5@Y12.com
сортированый по доменам
Из вашего домена там только 2 адреса
Для передачи письма всем, кто в списке из данного домена, достаточно одной сессии с
почтовым сервером данного домена (время - деньги)
Имеется шаблон письма с пустым или произвольным полем TO:
Соединяются с сервером домена X12.com, ставят в поле TO: адрес user1@X12.com
и отправляют письмо user1@X12.com, user2@X12.com, user3@X12.com
RCPT TO: <user1@X12.com>
RCPT TO: <user2@X12.com>
RCPT TO: <user3@X12.com>
DATA
Письмо ушло сразу трем юзерам, но у user2@X12.com и user3@X12.com в поле TO:будет стоять адрес user1@X12.com
Теперь ваш домен. Таким же макаром меняют в поле TO: адрес sales@XYZ.com и отправляют спам в один прием на 2 адреса.
В домене Y12.com аж пять юзеров, все они получат письмо с адресом user1@Y12.com
А в поле Envelope-to: будет все правильно.
Вот такая гипотенуза .

Автор: Alukardd
Дата сообщения: 15.08.2012 19:12
vlary
Что-то у меня непоняток некторый. Обычный случай - юзер использует MUA и пишет там "Кому", т.о. он заполняет поле To:? MUA со своим MTA открывает только одну сессию и отдаёт письмо целиком и далее сервер клиента откроет по одной сессии на каждый домен? Или на каждый ящик?
Автор: vlary
Дата сообщения: 15.08.2012 22:24
Alukardd Отправка писем одного человека другому через свой почтовый сервер и рассылка спама - немного разные вещи.
В первом случае письмо уйдет скорее всего сразу же. В случае высоконагруженого сервера ляжет в очередь. Очереди почтовые сервера тоже стараются обработать рационально, т.е. если установил связь с сервером для конкретного домена, то передать ему всю имеющуюся почту. Лежат в очереди 10 писем для этого домена - все уйдут в одну сессию.
MAIL FROM: RCPT TO: DATA RSET
MAIL FROM: RCPT TO: RCPT TO: DATA RSET / если в письме было несколько адресов или CC:
...........
MAIL FROM: RCPT TO: DATA QUIT
Тело письма для DATA каждый раз разное, лежит в отдельном файле очереди.
Когда письмо отправляет спам-машина, тут немного по-другому.
Это может быть совсем тупая рассылка, один файл с телом, и From: и To: фиктивные,
перебирается список отсортированный по домену, при смене домена происходит переподключение к другому серверу. Выглядит потом это у получателя так:
From: Арнольд Степанович
To: Арчибальд Полуэктович
Очень быстро, но как я уже писал, легко блочится в спам-фильтре по отсутствию целевого домена в адресе получателя. Да и получатель тут же шлет его в корзину.
Второй вариант - как в обсуждаемом случае. Так же быстро, но одним критерием для фильтра меньше.
Третий.вариант - тело письма модифицируется для каждого получателя. Письмо начинает больше походить на личное, но ценою замедления рассылки (если получателей в списке для этого домена - пять, то нужно передать пять тел письма вместо одного.

Автор: Alukardd
Дата сообщения: 16.08.2012 09:15
vlary
Меня интересовало именно то, что я спросил.
За сколько присестов уходят письмо из MUA к своему MTA.
Ну и на второй вопрос я вроде получил ответ.
Цитата:
Очереди почтовые сервера тоже стараются обработать рационально, т.е. если установил связь с сервером для конкретного домена, то передать ему всю имеющуюся почту.


Да и еще, почитав тут ваши труды и подумав... Собственно сравнивать To и RCPT TO на вхождение второго в первого можно конечно в acl_check_data как я понимаю, но например гуглогруппы рассылая письмо в поле To запихивают имя группы, а в From адрес истинного отправителя а не группы. Правда такие письма содержат заголовки List, но ни кто не мешает добавить их самому.

Страницы: 123456789101112131415161718192021

Предыдущая тема: Посоветуйте девайс для орг-ии VPN


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.