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

» FAQ по Exim MTA #2

Автор: Alukardd
Дата сообщения: 06.10.2014 17:29
dn1
Я ещё раз у себя проверил. И так:
у меня в конфиге написано вот так: auth_advertise_hosts = ${if or { {eq{$tls_cipher}{}} {match{$sender_host_name}{.*comfortel\.pro\$}} }{}{*}}
Сделал 2 подключения с разных сеток:
Цитата:
EHLO me
250-alukardd.org Hello me [176.97.36.243]
250-SIZE 52428800
250-8BITMIME
250-PIPELINING
250-AUTH PLAIN LOGIN CRAM-MD5
250 HELP

Цитата:
EHLO me
250-alukardd.org Hello 85-143-161-18.customer.comfortel.pro [85.143.161.18]
250-SIZE 52428800
250-8BITMIME
250-PIPELINING
250 HELP
Как видите с сетки comfortel'а я не получил приглашение для аутентификации.
Автор: dn1
Дата сообщения: 07.10.2014 09:12
Alukardd
Итак после многочисленных экспериментов... При добавление вашей строки в начало конфига с любым доменом, при подключение с разных доменов нигде не выводится AUTH и при попытке послать AUTH соответственно выдает 503 ошибку, при удаление строки - все ok


Цитата:

250-SIZE 52428800
250-PIPELINING
250-AUTH CRAM-MD5 PLAIN LOGIN
250-STARTTLS
250 HELP



Цитата:

250-SIZE 52428800
250-PIPELINING
250-STARTTLS
250 HELP
AUTH PLAIN
503 AUTH command used when not advertised


Получается не работает сравнение... Может версия exim... У меня 4.72
Автор: Alukardd
Дата сообщения: 07.10.2014 11:05
dn1
У меня так
Цитата:
# exim -bV
Exim version 4.84 #2 built 29-Aug-2014 18:34:25
Copyright (c) University of Cambridge, 1995 - 2014
(c) The Exim Maintainers and contributors in ACKNOWLEDGMENTS file, 2007 - 2014
Berkeley DB: Berkeley DB 5.3.28: (September 9, 2013)
Support for: crypteq iconv() IPv6 PAM Perl Expand_dlfunc GnuTLS move_frozen_messages Content_Scanning DKIM Old_Demime PRDR OCSP
Lookups (built-in): lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmjz dbmnz dnsdb dsearch ldap ldapdn ldapm mysql nis nis0 passwd pgsql sqlite
Authenticators: cram_md5 cyrus_sasl dovecot plaintext spa
Routers: accept dnslookup ipliteral iplookup manualroute queryprogram redirect
Transports: appendfile/maildir/mailstore/mbx autoreply lmtp pipe smtp
Fixed never_users: 0
Size of off_t: 8
Configuration file is /var/lib/exim4/config.autogenerated
Но я сомневаюсь что версия 4.72 такого не умеет.

Добавлено:
dn1
При добавлении чисто моей строки, на telnet на 25 порт ни чего и не должно выдаваться. У меня ssl обязателен. Я подключаюсь openssl'ем на 465 порт.
Автор: dn1
Дата сообщения: 07.10.2014 11:39
Alukardd
Я тоже подключаюсь через openssl на 465
Ладно не буду больше надоедать) Понятно, что проблема где-то у меня в конфиге. Буду искать. Спасибо за помощь.
Автор: Alukardd
Дата сообщения: 07.10.2014 11:48
dn1
Напоследок Вам совет ещё: проверьте что у Вас делаются DNS запросы вообще на подключения, должна быть установлена переменная host_lookup.
Автор: Clop345
Дата сообщения: 20.10.2014 15:31
Помогите пожалуйста дописать правило в конфиге EXIM
нужно исключать из проверки по DNSBL отдельные IP или подсети, перечисленные в файле

Сейчас кусок конфига выглядит так:

Код:

deny message = rejected because $sender_host_address is in a black list at $dnslist_domain. $dnslist_text
dnslists = ${readfile {/usr/local/etc/exim/dnsblists}{:}}
Автор: vlary
Дата сообщения: 20.10.2014 16:33
Clop345 Ну поставь перед этим правилом другое:
accept hosts = 1.0.0.1 : 1.4.3.5 : 2.4.6.8 ...
А если таких хостов дофига, то лучше иметь базу данных с белыми и черными списками.
У меня такая реализована на sqlite
Там забиты отдельные хосты и подсети с признаком гуд или бэд.
Если гуд. письмо сразу пропускается, если бэд, сразу отлуп.
Если в базе адреса нет. идет в грейлистинг.
Автор: batonser
Дата сообщения: 21.10.2014 11:58

Цитата:
Все заработало правило, до вел до ума!!

warn
set acl_m6 = ${lookup mysql{SELECT inactive FROM mailbox \
WHERE `username`='${quote_mysql:$local_part@$domain}'}}
domains = +local_domains

deny message = "You are not allowed to send mail out office"
hosts = +relay_from_hosts
domains = !+local_domains
condition = ${if eq {$acl_m5}{1}}

deny message = "In my mailserver not stored this user"
hosts = !+relay_from_hosts
domains = +local_domains
condition = ${if eq {$acl_m6}{1}}


Добрый день, помогите разобраться в ошибке:

выше правила написаны, они отрабатывают отлично, но вот с сегодняшнего дня правило как то стало срабатывать не корректно т.е

есть в бд запись почты admin@***.**
когда я отправляю письмо с любой локальной почты на эту почту, письма режутся .


2014-10-21 12:12:41 [948] U=mailnull F=<jabber@***.**> rejected RCPT <admin@***.**>: "In my mailserver not stored this user"
видно что письмо режется, а по какой причине не ясно. именно только admin@***.** этой почтой такой косяк вот...
в бд в эта учетка имеет параметр 1 в в поле inactive. по идее я с локалки на локалку отправляю а режется как будто с внешки отправляю.
где рыть искать проблему ?

на заметку, я в бд ставлю параметр 0 и только тогда эта учетка начинает принимать сообщения.
Автор: vlary
Дата сообщения: 21.10.2014 13:09
batonser
Цитата:
где рыть искать проблему ?  
Дебажить с помощью exim -bh. И смотреть, где правило криво отрабатывает

Автор: batonser
Дата сообщения: 22.10.2014 12:56

Код:
mail# exim -bh **.**.**.**

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

>>> host in hosts_connection_nolog? no (option unset)
LOG: [63795] SMTP connection from [**.**.**.**]
>>> 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 : **.**.**.**/16"? yes (matched "**.**.**.**/16")
>>> host in recipient_unqualified_hosts? yes (matched "+relay_from_hosts")
>>> host in helo_verify_hosts? no (option unset)
>>> host in helo_try_verify_hosts? no (option unset)
>>> gethostbyname looked up these IP addresses:
>>> name=localhost address=127.0.0.1
>>> host in helo_accept_junk_hosts? no (end of list)
220 domain.com, ESMTP EXIM 4.72
mail from: jabber@domain.com
>>> using ACL "acl_check_from"
>>> processing "warn"
>>> check set acl_m5 = ${lookup mysql{SELECT inactive FROM mailbox WHERE `username`='${quote_mysql:$sender_address}'}}
>>> = 1
>>> check hosts = +relay_from_hosts
>>> host in "+relay_from_hosts"? yes (matched "+relay_from_hosts" - cached)
>>> warn: condition test succeeded
>>> processing "accept"
>>> accept: condition test succeeded

250 OK
rcpt to: admin@domain.com
>>> using ACL "acl_check_rcpt"
>>> processing "warn"
>>> check set acl_m6 = ${lookup mysql{SELECT inactive FROM mailbox WHERE `username`='${quote_mysql:$local_part@$domain}'}}
>>> = 1
>>> check domains = +local_domains
>>> domain.com in "domain.com"? yes (matched "domain.com")
>>> domain.com in "+local_domains"? yes (matched "+local_domains")
>>> warn: condition test succeeded
>>> processing "deny"

>>> check hosts = +relay_from_hosts
>>> host in "+relay_from_hosts"? yes (matched "+relay_from_hosts" - cached)
>>> check domains = !+local_domains
>>> domain.com in "domain.com"? yes (matched "domain.com")
>>> domain.com in "!+local_domains"? no (matched "!+local_domains")
>>> deny: condition test failed
>>> processing "deny"
>>> check hosts = !+relay_from_hosts
>>> host in "!+relay_from_hosts"? no (matched "!+relay_from_hosts" - cached)
>>> deny: condition test failed
>>> processing "deny"

>>> check domains = +local_domains
>>> domain.com in "domain.com"? yes (matched "domain.com")
>>> domain.com in "+local_domains"? yes (matched "+local_domains")
>>> check local_parts = ^[.] : ^.*[@%!/|]
>>> admin in "^[.] : ^.*[@%!/|]"? no (end of list)
>>> deny: condition test failed
>>> processing "deny"
>>> check domains = !+local_domains
>>> domain.com in "domain.com"? yes (matched "domain.com")
>>> domain.com in "!+local_domains"? no (matched "!+local_domains")
>>> deny: condition test failed
>>> processing "accept"
>>> check local_parts = postmaster
>>> admin in "postmaster"? no (end of list)
>>> accept: condition test failed
>>> processing "accept"

>>> check hosts = wildlsearch;/usr/local/etc/exim/whitelist_host_names
>>> sender host name required, to match against wildlsearch;/usr/local/etc/exim/whitelist_host_names
>>> looking up host name for **.**.**.**
>>> IP address lookup using gethostbyaddr()
>>> IP address lookup yielded mail.domain.com
>>> gethostbyname looked up these IP addresses:
>>> name=mail.domain.com address=**.**.**.**
>>> checking addresses for mail.domain.com
>>> **.**.**.** OK
>>> mail.domain.com in "*.astv.kz"? no (end of list)
>>> mail.domain.com in "*.htel.kz"? no (end of list)
>>> mail.domain.com in "*.yahoo.com"? no (end of list)

.......
.......
........
>>> mail.domain.com in "*.yahoo.com"? no (end of list)
>>> mail.domain.com in "*.rambler.ru"? no (end of list)
>>> mail.domain.com in "*.gmail.com"? no (end of list)
>>> mail.domain.com in "*.minfin.kz"? no (end of list)
>>> mail.domain.com in "*.wbapiron02.worldbank.org"? no (end of list)
>>> mail.domain.com in "*.mail.worldbank.org"? no (end of list)
>>> host in "wildlsearch;/usr/local/etc/exim/whitelist_host_names"? no (end of list)
>>> accept: condition test failed
>>> processing "accept"
>>> check domains = +local_domains
>>> domain.com in "domain.com"? yes (matched "domain.com")
>>> domain.com in "+local_domains"? yes (matched "+local_domains")
>>> check verify = recipient
>>> domain.com in "domain.com"? yes (matched "domain.com")
>>> admin@domain.com in "*@domain.com"? yes (matched "*@domain.com")
LOG: [63795] "admin@domain.com" from env-to rewritten as "admin@domain.com" by rule 1
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing admin@domain.com
>>> admin in "passwd;admin : lsearch"? yes (matched "passwd;admin")
>>> calling kas30router router
>>> routed by kas30router router
>>> ----------- end verify ------------
>>> accept: condition test succeeded
250 Accepted



Автор: vlary
Дата сообщения: 22.10.2014 13:08
batonser
Цитата:
подскажите, что не так ?  
Да вроде все так. В результате ведь 250 Accepted
Либо чего-то в тесте не совсем так, как было в реале. Смотри в логе отлуп, и пробуй точно с такими параметрами.
Автор: batonser
Дата сообщения: 23.10.2014 06:44
Вот такие логи я вижу в main лог файле... сижу ковыряю ap-mailfiltr3, но как он режет сообщения понять не могу, других не режет а вот когда на админа отправляю сообщение то режет


Код:
2014-10-23 09:12:03 [4974] U=mailnull F=<jabber@domain.ru> rejected RCPT <admin@domain.ru>: "In my mailserver not stored this user"
2014-10-23 09:12:03 [4974] U=mailnull incomplete transaction (connection lost) from <jabber@domain.ru>
2014-10-23 09:12:03 [4974] unexpected EOF while reading SMTP command from mailnull
2014-10-23 09:12:03 [4913] 1Xh8oa-0001HE-KG ** admin@domain.ru F=<jabber@domain.ru> P=<jabber@domain.ru> R=kas30router T=kas30transport: LMTP error after end of data: 550 5.7.1 Message rejected (There was no valid recipients)
2014-10-23 09:12:03 [4975] cwd=/var/spool/exim 7 args: /usr/local/sbin/exim -t -oem -oi -f <> -E1Xh8oa-0001HE-KG

2014-10-23 09:12:03 [4975] 1Xh8ol-0001IF-Gk "jabber@domain.ru" from env-to rewritten as "jabber@domain.ru" by rule 1
2014-10-23 09:12:03 [4975] 1Xh8ol-0001IF-Gk "Mailer-Daemon@domain.ru" from from: rewritten as "Mailer-Daemon@domain.ru" by rule 1
2014-10-23 09:12:03 [4975] 1Xh8ol-0001IF-Gk "jabber@domain.ru" from to: rewritten as "jabber@domain.ru" by rule 1
2014-10-23 09:12:03 [4975] 1Xh8ol-0001IF-Gk <= <> R=1Xh8oa-0001HE-KG U=mailnull P=local S=8019 T="Mail delivery failed: returning message to sender" from <> for jabber@domain.ru
2014-10-23 09:12:03 [4976] cwd=/var/spool/exim 3 args: /usr/local/sbin/exim -Mc 1Xh8ol-0001IF-Gk
2014-10-23 09:12:03 [4976] 1Xh8ol-0001IF-Gk "jabber@domain.ru" from env-to rewritten as "jabber@domain.ru" by rule 1
2014-10-23 09:12:03 [4913] 1Xh8oa-0001HE-KG Completed QT=11s
Автор: Alukardd
Дата сообщения: 23.10.2014 10:20
batonser
Покажите в конфиге, где устанавливается переменная acl_m6.

Добавлено:

Цитата:
есть момент, когда в БД ставишь в поле inactive параметр 0, то на админа можно присылать письма, но тем самым я просто тупо даю этой учетке доступ на отправку/получение почты с вне, а мне так ненада. (
??? Так Вы же шлёте письмо на admin@... почему оно должно дойти по Вашей логике?
Автор: batonser
Дата сообщения: 23.10.2014 14:44

Цитата:
??? Так Вы же шлёте письмо на admin@... почему оно должно дойти по Вашей логике?


А почему оно не должно дойти по моей логике ?
Вы меня наверное не так поняли, на admin@ я отправляю с локальной почты(внутренней). И оно не доходит. Логи выше смотрите.



Цитата:
Все заработало правило, до вел до ума!!
acl_check_rcpt:
warn
set acl_m6 = ${lookup mysql{SELECT inactive FROM mailbox \
WHERE `username`='${quote_mysql:$local_part@$domain}'}}
domains = +local_domains

deny message = "You are not allowed to send mail out office"
hosts = +relay_from_hosts
domains = !+local_domains
condition = ${if eq {$acl_m5}{1}}

deny message = "In my mailserver not stored this user"
hosts = !+relay_from_hosts
domains = +local_domains
condition = ${if eq {$acl_m6}{1}}


Вот это правило у меня стоит в конфиге. Замечу, проблема возникает Только с почтой admin@.
Автор: Alukardd
Дата сообщения: 23.10.2014 23:59
batonser
Что-то мысли не складываются в стройные ряды...
Я бы взглянул на весь конфиг. так сказать для целостности картины.
Автор: batonser
Дата сообщения: 24.10.2014 12:43

Цитата:
batonser
Что-то мысли не складываются в стройные ряды...
Я бы взглянул на весь конфиг. так сказать для целостности картины.



Полность картины такая:

Configure:


Код:

primary_hostname = domain.ru
hide mysql_servers = localhost/exim/exim/exim

domainlist local_domains = ${lookup mysql{SELECT `domain` \
FROM `domain` WHERE \
`domain`='${domain}' AND \
`active`='1'}}

domainlist relay_to_domains = ${lookup mysql{SELECT `domain` \
FROM `domain` WHERE \
`domain`='${domain}' AND \
`active`='1'}}

hostlist relay_from_hosts = localhost : 10.10.0.0/16

acl_smtp_rcpt = acl_check_rcpt
acl_smtp_mime = acl_check_mime
acl_smtp_mail = acl_check_from

....
....
....


begin acl

acl_check_rcpt:
------------------------------
warn
set acl_m6 = ${lookup mysql{SELECT inactive FROM mailbox \
WHERE `username`='${quote_mysql:$local_part@$domain}'}}
domains = +local_domains
------------------------------------------
deny message = "You are not allowed to send mail out office"
hosts = +relay_from_hosts
domains = !+local_domains
condition = ${if eq {$acl_m5}{1}}
---------------------------------------------------------
deny message = "In my mailserver not stored this user"
hosts = !+relay_from_hosts
domains = +local_domains
condition = ${if eq {$acl_m6}{1}}
---------------------------------------------------
deny message = "incorrect symbol in address"
domains = +local_domains
local_parts = ^[.] : ^.*[@%!/|]

deny message = "incorrect symbol in address"
domains = !+local_domains
local_parts = ^[./|] : ^.*[@%!] : ^.*/\\.\\./

.....

deny message = "You in blacklist - $dnslist_domain \n $dnslist_text"
dnslists = opm.blitzed.org : cbl.abuseat.org : bl.cmsa.biz : dynablock
log_message = DNSBL

#accept hosts = +relay_from_hosts
accept

acl_check_mime:

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

deny message = This type of archive is blocked!
condition = ${if match {${lc:$mime_filename}}{\N(\.part01.rar|\.part01.zip)$\N}
hosts = !+relay_from_hosts
accept

deny message = This message contains malformed MIME $demime_reason.
condition = ${if > {$demime_errorlevel}{2} {1}{0}}

deny message = Attachment has unsupported file format .$found_extension. try text, P
demime = bat:btm:cmd:com:cpl:dat:dll:exe:lnk:msi:pif:prf:reg:scr:vb:vbs:url

acl_check_from:

acl_check_from:

warn
set acl_m5 = ${lookup mysql{SELECT inactive FROM mailbox \
WHERE `username`='${quote_mysql:$sender_address}'}}
hosts = +relay_from_hosts

accept



begin routers

# ROUTER ADDED BY KAS 3.0 INSTALLER
kas30router:
driver = accept
local_parts = passwd;$local_part : lsearch
condition = "${if !eq {$received_protocol}{local-esmtp}{yes}}"
transport = kas30transport

.......
Автор: Alukardd
Дата сообщения: 24.10.2014 17:41
batonser
Ну остаётся только проверить успешно ли отрабатывает транспорт, т.к. проверку router'а получатель проходит? Можно и нам для любопытства взглянуть на kas30transport?
Автор: batonser
Дата сообщения: 27.10.2014 07:04

Цитата:
batonser
Ну остаётся только проверить успешно ли отрабатывает транспорт, т.к. проверку router'а получатель проходит? Можно и нам для любопытства взглянуть на kas30transport?



# TRANSPORT ADDED BY KAS 3.0 INSTALLER
kas30transport:
driver = lmtp
batch_max = 100
command = /usr/local/ap-mailfilter3/bin/kas-pipe
return_path_add = false
Автор: Alukardd
Дата сообщения: 27.10.2014 07:37
batonser
А есть у вас возможность вручную (в командной строке) проверить что данный транспорт отрабатывает правильно для пользователя admin@...? Просто вызывать kas-pipe с нужными аргументами.
Автор: batonser
Дата сообщения: 27.10.2014 14:32

Цитата:
[/q]
[q]batonser
А есть у вас возможность вручную (в командной строке) проверить что данный транспорт отрабатывает правильно для пользователя admin@...? Просто вызывать kas-pipe с нужными аргументами.


возможность есть, знаний нету, не приходилось еще так проверять.
Автор: Alukardd
Дата сообщения: 28.10.2014 07:50
batonser
Ну у меня нету kas-pipe и что там он умеет я хз...
Прочитал вообще что такое kas-pipe, что за бред? Почему антивирус надо цеплять как транспорт? Ведь есть же нативный способ подключить антивирус...
Автор: batonser
Дата сообщения: 28.10.2014 14:53
mail# /usr/local/ap-mailfilter3/bin/kas-pipe
220 kas30pipe.localhost LMTP Service ready
mail from: jabber@domain.ru
250 2.1.0 Sender Ok
rcpt to: admin@domain.ru
250 2.1.5 Recipient Ok
data
354 3.3.0 Enter mail, end with <CRLF>.<CRLF>
qwqwqwqwqw.
.
550 5.7.1 Message rejected (There was no valid recipients)
quit
221 2.0.0 Good bye
mail#

вот так пробовал. но в логах пишется что письмо бреется правилом запрещающее получать письма из вне.
Автор: Alukardd
Дата сообщения: 28.10.2014 15:40
batonser
Да ну? Вот же Ваше сообщение в котором видно лог с этой ошибкой.
Автор: batonser
Дата сообщения: 30.10.2014 14:12

Цитата:
batonser
Да ну? Вот же Ваше сообщение в котором видно лог с этой ошибкой.



Лучше б посоветовали что делать. суть проблемы не изменилась.
Автор: Alukardd
Дата сообщения: 30.10.2014 14:56
batonser
Разбираться с транспортом от Касперского. если ACL я могу за Вас проверить на своём сервере, то kas-pipe у меня нету и заморачиваться с ним у себя я не буду.

Существует ли по факту ящик у admin@? Как kas-pipe ищет пользователей?
Что в базе он описан более-менее верно, я и атк вижу, т.к. ACL'и находят его и успешно проходят проверки.

Какой там дальше формат хранения писем, maildir там или mailbox или вообще в базе? Создаются ли хранилища автоматически или надо для каждого нового пользователя предварительно создать его?
Автор: FloID_aka
Дата сообщения: 06.11.2014 15:51
Здравствуйте
Подскажите где находится конфиг exim4 "/usr/local/etc/" - тут нету, "/etc/exim" - тут тоже
Мне надо изменить HELO, с линухом не работал.
Автор: vlary
Дата сообщения: 06.11.2014 17:36
FloID_aka
Цитата:
Подскажите где находится конфиг exim4
find / -name exim* -print

Автор: Alukardd
Дата сообщения: 06.11.2014 18:23
vlary, FloID_aka
Вообще-то было бы неплохо знать дистрибутив. т.к. в Debian конфиг, который надо править, это не конфиг а template... Так что уже есть нюансы.
Если каталог /etc/exim есть то с очень большой вероятностью конфиг должен быть там.

exim4 -bV | grep -i config
Покажет, какой конфиг на данный момент используется. Опять же напоминаю, что в случае с Debian подобными дистрибутивами, этот файл непосредственно править не стоит, т.к. он перезатирается автоматически.
Автор: vlary
Дата сообщения: 06.11.2014 21:45
Alukardd
Цитата:
в Debian конфиг, который надо править, это не конфиг а template...
Именно этим Exim в Debian мне активно не понравился, я его снес и собрал свой из исходников,
с единым конфигом /usr/local/etc/exim.conf
Ибо привык к такому, что было у меня лет десять на SCO OpenServer
Old habits die hard...
Автор: FloID_aka
Дата сообщения: 07.11.2014 12:53
Alukardd
uname -a показывает что это "Linux 14579 2.6.32-042stab093.5 #1 SMP Wed Sep 10 17:39:49 MSK 2014 x86_64 GNU/Linux" какой дист. я хз

в каталоге "/etc/exim" есть два конфига "exim4.conf.template" и и такой же с датой. Какой из них рабочий ? В rc.conf тоже нечего нет. Только exim_enable="YES"


Команда "exim4 -bV | grep -i config" показала:
exim4 -bV | grep -i config
Configuration file is /var/lib/exim4/config.autogenerated
Мне его править надо ?

Страницы: 123456789101112131415161718192021

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


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