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

» FAQ по Exim MTA #2

Автор: vlary
Дата сообщения: 04.09.2014 11:37
batonser
Цитата:
щяс я все сделаю как Вы выше просили!
Я ничего не просил, ибо мне ничего из этого не надо. Я советовал.
Цитата:
те у кого 1 вообще не могу отправлять.
Не удивительно, ибо все сделано не так, как у меня написано.
Я писал:
set acl_m5 = ${lookup mysql{SELECT inactive FROM mailbox \
WHERE `username`='${quote_mysql:$sender_address}' }}
А что вижу:
set acl_m5 = ${lookup mysql{SELECT username FROM mailbox WHERE `username`='${quote_mysql:$sender_address}'}}
Исправь и проверяй дальше.
Автор: batonser
Дата сообщения: 04.09.2014 12:24
исправил, но ситуация аналогична, правила запрещают отправлять и на внешку и по локалке тем пользователям у кого значение = 1

Добавлено:
Чуть подправив то что я имею в конфиге, у меня теперь все работает так как нада, но со внешки письма так и приходят на любые адреса


Код:
begin acl

acl_check_from:

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


accept


acl_check_rcpt:

accept hosts = :


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



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

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



Автор: vlary
Дата сообщения: 04.09.2014 13:56

Цитата:
правила запрещают отправлять и на внешку и по локалке тем пользователям у кого значение = 1
Давай определимся, что значит inactive.
1 - это разрешено отправлять или запрещено?
Потом, у тебя не правило запрещающее сработало, а ты не сделал HELO/EHLO и получил
550 "HELO/EHLO - require by SMTP RFC"
В данном примере тест отработал правильно, отправитель - inactive = 1,
получатель - внешний, готовился отлуп, но произошел раньше, поскольку нарушен протокол.
Рекомендую пока идет настройка, оставить конфиг такой, при котором почта хоть как-то работает.
А тестовый кофиг запиши куда-нибудь в /tmp/exim.conf
И проводи тестирование командой /path/to/exim -C /tmp/exim.conf -h x.x.x.x
можешь добавить в acl_check_from:
warn
set acl_m5 = 2
hosts = !+relay_from_hosts
И В acl_check_rcpt:
warn
set acl_m6 = 2
domains = !+local_domains

и дальше имеешь стройную логику

Код: если acl_m5 = 0 и acl_m6 = 2 - accept (активный внешнему)
если acl_m5 = 2 и acl_m6 = 0 - accept (внешний активному)
если acl_m5 = 0 и acl_m6 = 0 - accept (внутренняя почта)
если acl_m5 = 1 и acl_m6 = 0 - accept (внутренняя почта)
если acl_m5 = 0 и acl_m6 = 1 - accept (внутренняя почта)
если acl_m5 = 1 и acl_m6 = 1 - accept (внутренняя почта)
если acl_m5 = 1 и acl_m6 = 2 - deny (наружу от неактивного)
если acl_m5 = 2 и acl_m6 = 1 - deny (внутрь неактивному)
если acl_m5 = 2 и acl_m6 = 2 - deny (попытка релея)
если acl_m5 = 2 и acl_m6 = пусто - deny (нет такого ящика)
Автор: batonser
Дата сообщения: 04.09.2014 14:29

Цитата:
Давай определимся, что значит inactive.
1 - это разрешено отправлять или запрещено?


1 это кому запрещено отправлять на внешку и принимать с внешки.

еще момент этот столбец inactive я добавил в основную таблицу exim

т.е
+------------------------+--------------+------------------------+-------------------------+-------+-----------------+-----------+---------------------+---------------------+--------+----------+
| username | password | name | maildir | quota | local_part | domain | created | modified | active | inactive |
+------------------------+--------------+------------------------+-------------------------+-------+-----------------+-----------+---------------------+---------------------+--------+----------+

с этой таблицы в принципе берутся пользователи .... (это мало важный момент, но все же его озвучу дабы не было не допониманий)

Конфиг у меня забэкапаный есть, могу в живую с ним играться так как почтой щяс мало кто пользуется, в общем терпимо!

Можно ли как то через транспорт забрить прием писем для пользователей почты?


Автор: vlary
Дата сообщения: 04.09.2014 16:56
batonser
Цитата:
Можно ли как то через транспорт забрить прием писем для пользователей почты
А какой смысл? Через акцесс-листы все прекрасно должно бриться.
А чтобы гнать через разные транспорты, тоже какие-то критерии сочинять нужно.

Автор: batonser
Дата сообщения: 05.09.2014 12:16
В Общем при таком раскладе в конфиге, почта по локалке ходит на внешку письма уходят только с тех у кого в БД стоит 0,
но принимают все почтовые адреса со внешки.

что самое интересное

deny message = "In my mailserver not stored this user"
!hosts = +relay_from_hosts если закоментить эту строчку, письма по локалке не ходят вообще. Это правило не правельно отрабатывает.
domains = +local_domains
condition = ${if eq {$acl_m6}{1}}



Код:
acl_check_from:

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

accept


acl_check_rcpt:

#accept hosts = :


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

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

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

Автор: vlary
Дата сообщения: 05.09.2014 13:01
batonser
Цитата:
если закоментить эту строчку, письма по локалке не ходят вообще
Правильно, и не будут. Попробуй провести дебаг сессии с параметрами
/path/to/exim -h 94.100.177.108 с параметрами
HELO smtp48.i.mail.ru
MAIL FROM: <test@mail.ru>
RCPT TO: сначала неактивный, потом активный юзер
И покажи как отрабатывается
Автор: batonser
Дата сообщения: 05.09.2014 13:24

Цитата:
Попробуй провести дебаг сессии с параметрами
/path/to/exim -h 94.100.177.108 с параметрами
HELO smtp48.i.mail.ru
MAIL FROM: <test@mail.ru>
RCPT TO: сначала неактивный, потом активный юзер
И покажи как отрабатывается


почитав ман нашел

-h <number>
This option is accepted for compatibility with Sendmail, but
has no effect. (In Sendmail it overrides the "hop count"
obtained by counting Received: headers.)

но я так думаю меня интересует

-d<debug options>


Код:
mail# exim -d 94.100.177.108
Exim version 4.72 (FreeBSD 7.2) uid=0 gid=0 pid=72292 D=fbb95cfd
Probably Berkeley DB version 1.8x (native mode)
Support for: crypteq iconv() use_setclassresources PAM Perl Expand_dlfunc OpenSSL Content_Scanning DKIM Old_Demime
Lookups: lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmnz dnsdb dsearch mysql nis nis0 passwd
Authenticators: cram_md5 dovecot plaintext spa
Routers: accept dnslookup ipliteral manualroute queryprogram redirect
Transports: appendfile/maildir/mailstore/mbx autoreply lmtp pipe smtp
Fixed never_users: 0
Size of off_t: 8
OpenSSL compile-time version: OpenSSL 0.9.8e 23 Feb 2007
OpenSSL runtime version: OpenSSL 0.9.8e 23 Feb 2007
changed uid/gid: forcing real = effective
uid=0 gid=0 pid=72292
auxiliary group list: 0
seeking password data for user "mailnull": using cached result
getpwnam() succeeded uid=26 gid=26
seeking password data for user "root": cache not available
getpwnam() succeeded uid=0 gid=0
configuration file is /usr/local/etc/exim/configure
log selectors = ffffffff 7fffffff
LOG: MAIN
cwd=/root 3 args: exim -d 94.100.177.108
trusted user
admin user
changed uid/gid: privilege not needed
uid=26 gid=6 pid=72292
auxiliary group list: 6 6
seeking password data for user "mailnull": cache not available
getpwnam() succeeded uid=26 gid=26
originator: uid=0 gid=0 login=root name=Charlie Root
sender address = root@domen.ru
set_process_info: 72292 accepting a local non-SMTP message from <root@domen.ru>
Sender: root@domen.ru
Recipients:
94.100.177.108
search_tidyup called
HELO smtp48.i.mail.ru
MAIL FROM: batonser@mail.ru
>>Headers received:

address match: subject=94.100.177.108@domen.ru pattern=*@domen.ru
domen.ru in "domen.ru"? yes (matched "domen.ru")
94.100.177.108@domen.ru in "*@domen.ru"? yes (matched "*@domen.ru")
LOG: address_rewrite MAIN
"94.100.177.108@domen.ru" from env-to rewritten as "94.100.177.108@domen.ru" by rule 1
address match: subject=root@domen.ru pattern=*@domen.ru
domen.ru in "domen.ru"? yes (matched "domen.ru")
root@domen.ru in "*@domen.ru"? yes (matched "*@domen.ru")
LOG: address_rewrite MAIN
"root@domen.ru" from env-from rewritten as "root@domen.ru" by rule 1
rewritten sender = root@domen.ru
rewrite_one_header: type=F:
From: Charlie Root <root@domen.ru>
address match: subject=root@domen.ru pattern=*@domen.ru
domen.ru in "domen.ru"? yes (matched "domen.ru")
root@domen.ru in "*@domen.ru"? yes (matched "*@domen.ru")
LOG: address_rewrite MAIN
"root@domen.ru" from from: rewritten as "root@domen.ru" by rule 1
newlen=33 newtype=F newtext:
From: Charlie Root <root@domen.ru>
remainder:
search_tidyup called
>>Headers after rewriting and local additions:
Date: Fri, 05 Sep 2014 16:09:45 +0600
I Message-Id: <E1XPqSO-000Ip2-Qx@domen.ru>
* X-rewrote-original-recipient: 94.100.177.108@domen.ru
* From: Charlie Root <root@domen.ru>
F From: Charlie Root <root@domen.ru>
* X-rewrote-sender: root@domen.ru
...
.
.
.
.
.

Probably Berkeley DB version 1.8x (native mode)
Support for: crypteq iconv() use_setclassresources PAM Perl Expand_dlfunc OpenSSL Content_Scanning DKIM Old_Demime
Lookups: lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmnz dnsdb dsearch mysql nis nis0 passwd
Authenticators: cram_md5 dovecot plaintext spa
Routers: accept dnslookup ipliteral manualroute queryprogram redirect
Transports: appendfile/maildir/mailstore/mbx autoreply lmtp pipe smtp
Fixed never_users: 0
Size of off_t: 8
OpenSSL compile-time version: OpenSSL 0.9.8e 23 Feb 2007
OpenSSL runtime version: OpenSSL 0.9.8e 23 Feb 2007
changed uid/gid: forcing real = effective
uid=0 gid=6 pid=72684
auxiliary group list: 6
seeking password data for user "mailnull": using cached result
getpwnam() succeeded uid=26 gid=26
configuration file is /usr/local/etc/exim/configure
log selectors = ffffffff 7fffffff
LOG: MAIN
cwd=/var/spool/exim 8 args: /usr/local/sbin/exim -d=0xfbb95cfd -t -oem -oi -f <> -E1XPqX9-000Isk-Ub
trusted user
admin user
changed uid/gid: privilege not needed
uid=26 gid=6 pid=72684
auxiliary group list: 6 6
seeking password data for user "mailnull": using cached result
getpwnam() succeeded uid=26 gid=26
originator: uid=26 gid=6 login=mailnull name=
sender address =
set_process_info: 72684 accepting a local non-SMTP message from <>
Sender:
search_tidyup called
>>Headers received:
X-Failed-Recipients: 94.100.177.108@domen.ru
Auto-Submitted: auto-replied
From: Mail Delivery System <Mailer-Daemon@domen.ru>
To: root@domen.ru
Subject: Mail delivery failed: returning message to sender

address match: subject=root@domen.ru pattern=*@domen.ru
domen.ru in "domen.ru"? yes (matched "domen.ru")
root@domen.ru in "*@domen.ru"? yes (matched "*@domen.ru")
LOG: address_rewrite MAIN
"root@domen.ru" from env-to rewritten as "root@domen.ru" by rule 1
rewrite_one_header: type=F:
From: Mail Delivery System <Mailer-Daemon@domen.ru>
address match: subject=Mailer-Daemon@domen.ru pattern=*@domen.ru
domen.ru in "domen.ru"? yes (matched "domen.ru")
Mailer-Daemon@domen.ru in "*@domen.ru"? yes (matched "*@domen.ru")
LOG: address_rewrite MAIN
"Mailer-Daemon@domen.ru" from from: rewritten as "Mailer-Daemon@domen.ru" by rule 1
newlen=50 newtype=F newtext:
From: Mail Delivery System <Mailer-Daemon@domen.ru>
remainder:
rewrite_one_header: type=T:
To: root@domen.ru
address match: subject=root@domen.ru pattern=*@domen.ru
domen.ru in "domen.ru"? yes (matched "domen.ru")
root@domen.ru in "*@domen.ru"? yes (matched "*@domen.ru")
LOG: address_rewrite MAIN
"root@domen.ru" from to: rewritten as "root@domen.ru" by rule 1
newlen=16 newtype=T newtext:
To: root@domen.ru
remainder:
search_tidyup called
>>Headers after rewriting and local additions:
Date: Fri, 05 Sep 2014 16:15:49 +0600
I Message-Id: <E1XPqYX-000IuK-2G@domen.ru>
X-Failed-Recipients: 94.100.177.108@domen.ru
Auto-Submitted: auto-replied
* From: Mail Delivery System <Mailer-Daemon@domen.ru>
F From: Mail Delivery System <Mailer-Daemon@domen.ru>
* To: root@domen.ru
T To: root@domen.ru
Subject: Mail delivery failed: returning message to sender
* X-rewrote-original-recipient: root@domen.ru

Data file written for message 1XPqYX-000IuK-2G
>>Generated Received: header line
P Received: from mailnull by domen.ru with local (Exim 4.72 (FreeBSD))
id 1XPqYX-000IuK-2G
for root@domen.ru; Fri, 05 Sep 2014 16:15:49 +0600
calling local_scan(); timeout=300
local_scan() returned 0 NULL
Writing spool header file
Size of headers = 412
LOG: MAIN
<= <> R=1XPqX9-000Isk-Ub U=mailnull P=local S=1193 T="Mail delivery failed: returning message to sender"
search_tidyup called
search_tidyup called
exec /usr/local/sbin/exim -d=0xfbb95cfd -Mc 1XPqYX-000IuK-2G
>>>>>>>>>>>>>>>> Exim pid=72684 terminating with rc=0 >>>>>>>>>>>>>>>>
Exim version 4.72 (FreeBSD 7.2) uid=26 gid=6 pid=72685 D=fbb95cfd
Writing spool header file
Probably Berkeley DB version 1.8x (native mode)
Support for: crypteq iconv() use_setclassresources PAM Perl Expand_dlfunc OpenSSL Content_Scanning DKIM Old_Demime
Lookups: lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmnz dnsdb dsearch mysql nis nis0 passwd
Authenticators: cram_md5 dovecot plaintext spa
Routers: accept dnslookup ipliteral manualroute queryprogram redirect
Transports: appendfile/maildir/mailstore/mbx autoreply lmtp pipe smtp
Fixed never_users: 0
Size of off_t: 8
OpenSSL compile-time version: OpenSSL 0.9.8e 23 Feb 2007
OpenSSL runtime version: OpenSSL 0.9.8e 23 Feb 2007
changed uid/gid: forcing real = effective
uid=0 gid=6 pid=72685
auxiliary group list: 6
seeking password data for user "mailnull": using cached result
getpwnam() succeeded uid=26 gid=26
configuration file is /usr/local/etc/exim/configure
log selectors = ffffffff 7fffffff
LOG: MAIN
cwd=/var/spool/exim 4 args: /usr/local/sbin/exim -d=0xfbb95cfd -Mc 1XPqYX-000IuK-2G
trusted user
admin user
skipping ACL configuration - not needed
seeking password data for user "mailnull": using cached result
getpwnam() succeeded uid=26 gid=26
set_process_info: 72685 delivering specified messages
set_process_info: 72685 delivering 1XPqYX-000IuK-2G
reading spool file 1XPqYX-000IuK-2G-H
user=mailnull uid=26 gid=6 sender=
sender_local=0 ident=mailnull
Non-recipients:
Empty Tree
---- End of tree ----
recipients_count=1
body_linecount=33 message_linecount=10
Delivery address list:
root@domen.ru
locking /var/spool/exim/db/retry.lockfile
locked /var/spool/exim/db/retry.lockfile
EXIM_DBOPEN(/var/spool/exim/db/retry)
returned from EXIM_DBOPEN
opened hints database /var/spool/exim/db/retry: flags=O_RDONLY
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Considering: root@domen.ru
unique = root@domen.ru
dbfn_read: key=R:domen.ru
dbfn_read: key=R:root@domen.ru
dbfn_read: key=R:root@domen.ru:<>
no domain retry record
no address retry record
root@domen.ru: queued for routing
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
routing root@domen.ru
--------> kas30router router <--------
local_part=root domain=domen.ru
checking local_parts
search_open: passwd "NULL"
search_find: file="NULL"
key="root" partial=-1 affix=NULL starflags=0
LRU list:
internal_search_find: file="NULL"
type=passwd key="root"
database lookup required for root
seeking password data for user "root": cache not available
getpwnam() succeeded uid=0 gid=0
lookup yielded: *:0:0:Charlie &:/root:/bin/csh
root in "passwd;root : lsearch"? yes (matched "passwd;root")
checking "condition"
calling kas30router router
kas30router router called for root@domen.ru
domain = domen.ru
set transport kas30transport
queued for kas30transport transport: local_part = root
domain = domen.ru
errors_to=NULL
domain_data=NULL localpart_data=*:0:0:Charlie &:/root:/bin/csh
routed by kas30router router
envelope to: root@domen.ru
transport: kas30transport
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
After routing:
Local deliveries:
root@domen.ru
Remote deliveries:
Failed addresses:
Deferred addresses:
search_tidyup called
>>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>
--------> root@domen.ru <--------
locking /var/spool/exim/db/retry.lockfile
locked /var/spool/exim/db/retry.lockfile
EXIM_DBOPEN(/var/spool/exim/db/retry)
returned from EXIM_DBOPEN
opened hints database /var/spool/exim/db/retry: flags=O_RDONLY
dbfn_read: key=T:root@domen.ru
no retry record exists
search_tidyup called
changed uid/gid: local delivery to root <root@domen.ru> transport=kas30transport
uid=26 gid=6 pid=72686
auxiliary group list: 6
home=NULL current=/
set_process_info: 72686 delivering 1XPqYX-000IuK-2G to root using kas30transport
kas30transport transport entered
using command /usr/local/ap-mailfilter3/bin/kas-pipe
direct command:
argv[0] = /usr/local/ap-mailfilter3/bin/kas-pipe
direct command after expansion:
argv[0] = /usr/local/ap-mailfilter3/bin/kas-pipe
LMTP<< 220 kas30pipe.localhost LMTP Service ready
LMTP>> LHLO domen.ru
LMTP<< 250-kas30pipe.localhost Pleased to meet you
LMTP<< 250-ENHANCEDSTATUSCODES
LMTP<< 250-8BITMIME
LMTP<< 250 PIPELINING
LMTP>> MAIL FROM:<>
Size of headers = 285
LOG: MAIN
Completed QT=1m26s
end delivery of 1XPqX9-000Isk-Ub
search_tidyup called
search_tidyup called
>>>>>>>>>>>>>>>> Exim pid=72683 terminating with rc=0 >>>>>>>>>>>>>>>>
LMTP<< 250 2.1.0 Sender Ok
LMTP>> RCPT TO:<root@domen.ru>
LMTP<< 250 2.1.5 Recipient Ok
LMTP>> DATA
LMTP<< 354 3.3.0 Enter mail, end with <CRLF>.<CRLF>
LMTP>> writing message and terminating "."
writing data block fd=9 size=1240 timeout=300
LMTP<< 550 5.7.1 Message rejected (There was no valid recipients)
LMTP>> QUIT
LMTP<< 221 2.0.0 Good bye
kas30transport transport yields 1
search_tidyup called
kas30transport transport returned FAIL for root@domen.ru
post-process root@domen.ru (2)
LOG: MAIN
** root@domen.ru F=<> P=<> R=kas30router T=kas30transport: LMTP error after end of data: 550 5.7.1 Message rejected (There was no valid recipients)
>>>>>>>>>>>>>>>> deliveries are done >>>>>>>>>>>>>>>>
changed uid/gid: post-delivery tidying
uid=26 gid=6 pid=72685
auxiliary group list: 6
set_process_info: 72685 tidying up after delivering 1XPqYX-000IuK-2G
Processing retry items
Succeeded addresses:
Failed addresses:
Deferred addresses:
root@domen.ru: no retry items
end of retry processing
LOG: MAIN
Frozen (delivery error message)
delivery deferred: update_spool=1 header_rewritten=0
Writing spool header file
Size of headers = 412
end delivery of 1XPqYX-000IuK-2G
search_tidyup called
search_tidyup called
>>>>>>>>>>>>>>>> Exim pid=72685 terminating with rc=0 >>>>>>>>>>>>>>>>


Автор: vlary
Дата сообщения: 05.09.2014 14:19
batonser
Цитата:
чета я по моему не то делаю.
Небольшая ошибочка, нужно
/path/to/exim -bh 94.100.177.108
Автор: batonser
Дата сообщения: 05.09.2014 14:48

Цитата:
Небольшая ошибочка, нужно
/path/to/exim -bh 94.100.177.108



Вот для не активного


Код:
mail# exim -bh 94.100.177.108

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

>>> host in hosts_connection_nolog? no (option unset)
LOG: [75835] SMTP connection from [94.100.177.108]
>>> 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 : 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)
>>> gethostbyname looked up these IP addresses:
>>> name=localhost address=127.0.0.1
>>> host in helo_accept_junk_hosts? no (end of list)
220 kfm.kz, ESMTP EXIM 4.72
HELO smtp48.i.mail.ru
>>> smtp48.i.mail.ru in helo_lookup_domains? no (end of list)
250 kfm.kz Hello smtp48.i.mail.ru [94.100.177.108]
MAIL FROM: batonser@mail.ru
>>> using ACL "acl_check_from"
>>> processing "warn"
>>> check set acl_m5 = ${lookup mysql{SELECT inactive FROM mailbox WHERE `username`='${quote_mysql:$sender_address}'}}
>>> =
>>> check hosts = +relay_from_hosts
>>> host in "+relay_from_hosts"? no (end of list)
>>> warn: condition test failed
>>> processing "accept"
>>> accept: condition test succeeded
250 OK
RCPT TO: jabber@kfm.kz
>>> using ACL "acl_check_rcpt"
>>> processing "warn"
>>> check set acl_m6 = ${lookup mysql{SELECT inactive FROM mailbox WHERE `username`='${quote_mysql:$sender_address}'}}
>>> =
>>> check domains = +local_domains
>>> kfm.kz in "kfm.kz"? yes (matched "kfm.kz")
>>> kfm.kz in "+local_domains"? yes (matched "+local_domains")
>>> warn: condition test succeeded
>>> processing "deny"
>>> check !hosts = +relay_from_hosts
>>> host in "+relay_from_hosts"? no (end of list)
>>> check domains = +local_domains
>>> kfm.kz in "kfm.kz"? yes (matched "kfm.kz")
>>> kfm.kz in "+local_domains"? yes (matched "+local_domains")
>>> check condition = ${if eq {$acl_m6}{1}}
>>> =
>>> deny: condition test failed
>>> processing "deny"
>>> check hosts = +relay_from_hosts
>>> host in "+relay_from_hosts"? no (end of list)
>>> deny: condition test failed
>>> processing "deny"
>>> check domains = +local_domains
>>> kfm.kz in "kfm.kz"? yes (matched "kfm.kz")
>>> kfm.kz in "+local_domains"? yes (matched "+local_domains")
>>> check local_parts = ^[.] : ^.*[@%!/|]
>>> jabber in "^[.] : ^.*[@%!/|]"? no (end of list)
>>> deny: condition test failed
>>> processing "deny"
>>> check domains = !+local_domains
>>> kfm.kz in "kfm.kz"? yes (matched "kfm.kz")
>>> kfm.kz in "!+local_domains"? no (matched "!+local_domains")
>>> deny: condition test failed
>>> processing "accept"
>>> check local_parts = postmaster
>>> jabber 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 94.100.177.108
>>> IP address lookup yielded smtp48.i.mail.ru
>>> gethostbyname looked up these IP addresses:
>>> name=smtp48.i.mail.ru address=94.100.177.108
>>> checking addresses for smtp48.i.mail.ru
>>> 94.100.177.108 OK
>>> smtp48.i.mail.ru in "*.astv.kz"? no (end of list)
>>> smtp48.i.mail.ru in "*.htel.kz"? no (end of list)
>>> smtp48.i.mail.ru in "*.yahoo.com"? no (end of list)
>>> smtp48.i.mail.ru in "*.pravstat.kz"? no (end of list)
>>> smtp48.i.mail.ru in "*.ivc.lan"? no (end of list)
>>> smtp48.i.mail.ru in "*.statbase.kz"? no (end of list)
>>> smtp48.i.mail.ru in "*.nsa.lan"? no (end of list)
>>> smtp48.i.mail.ru in "*.minfin.kz"? no (end of list)
>>> smtp48.i.mail.ru in "*.ukimet.kz"? no (end of list)
>>> smtp48.i.mail.ru in "*.mgd.kz"? no (end of list)
>>> smtp48.i.mail.ru in "*.parlam.kz"? no (end of list)
>>> smtp48.i.mail.ru in "*.enbek.kz"? no (end of list)
>>> smtp48.i.mail.ru in "*.minagri.kz"? no (end of list)
>>> smtp48.i.mail.ru in "*.azkrk.kz"? no (end of list)
>>> smtp48.i.mail.ru in "*.kysmet.kz"? no (end of list)
>>> smtp48.i.mail.ru in "*.kostanay.kz"? no (end of list)
>>> smtp48.i.mail.ru in "*.edu.gov.kz"? no (end of list)
>>> smtp48.i.mail.ru in "*.q0100.customs.kz"? no (end of list)
>>> smtp48.i.mail.ru in "*.halykbank.kz"? no (end of list)
>>> smtp48.i.mail.ru in "*.nationalbank.kz"? no (end of list)
>>> smtp48.i.mail.ru in "*.kds.kz"? no (end of list)
>>> smtp48.i.mail.ru in "*.abekp.kz"? no (end of list)
>>> smtp48.i.mail.ru in "*.zhambyl.kz"? no (end of list)
>>> smtp48.i.mail.ru in "*.mail.ru"? yes (matched "*.mail.ru")
>>> host in "wildlsearch;/usr/local/etc/exim/whitelist_host_names"? yes (matched "wildlsearch;/usr/local/etc/exim/whitelist_host_names")
>>> accept: condition test succeeded
250 Accepted
Автор: batonser
Дата сообщения: 08.09.2014 07:54

Код:
acl_check_from:

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

accept


acl_check_rcpt:

warn
set acl_m6 = ${lookup mysql{SELECT inactive FROM mailbox \
WHERE `username`='${quote_mysql:$sender_address}'}}
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}}

Автор: vlary
Дата сообщения: 08.09.2014 11:48
batonser
Цитата:
т.е изходя из этого правила m5 m6 одинаково работают, даже когда оба включены
Они не могут одинаково работать, поскольку разные.
acl_m5 соответствует типу отправителя письма: 0 - внутренний активный, 1 - внутренний неактивный, 2 - внешний.
acl_m6 соответствует типу получателя письма: 0 - внутренний активный, 1 - внутренний неактивный, 2 - внешний.
Логику accept или deny в соответствии с их значением я уже приводил ранее.
Здесь у тебя ошибка:
RCPT TO: jabber@kfm.kz
>>> using ACL "acl_check_rcpt"
>>> processing "warn"
>>> check set acl_m6 = ${lookup mysql{SELECT inactive FROM mailbox WHERE `username`='${quote_mysql:$sender_address}'}}
>>> =
Ты делаешь SELECT по адресу отправителя, а надо по адресу получателя.
Автор: try09
Дата сообщения: 09.09.2014 10:23
Доброго времени суток, вопрос немного не по теме, есть сервер с mailman+exim4+mysql. С недавнего времени начали жаловаться подписчики, что приходит много повторяющихся писем. На тестовый ящик с 1 расслки пришло 3 письма

cat /var/log/exim4/mainlog | grep "1XRDnZ-0001yH-L0" | grep "ххх@bk.ru"
2014-09-09 09:40:04 1XRDnZ-0001yH-L0 == ххх@bk.ru R=dnslookup T=remote_smtp defer (-18): Remote host mxs.mail.ru [217.69.139.150] closed connection in response to end of data
2014-09-09 10:24:49 1XRDnZ-0001yH-L0 == ххх@bk.ru R=dnslookup T=remote_smtp defer (-18): Remote host mxs.mail.ru [217.69.139.150] closed connection in response to end of data
2014-09-09 10:54:38 1XRDnZ-0001yH-L0 == ххх@bk.ru R=dnslookup T=remote_smtp defer (-18): Remote host mxs.mail.ru [217.69.139.150] closed connection in response to end of data

куда копать, может кто подскажет?
Автор: vlary
Дата сообщения: 09.09.2014 11:18
try09
Цитата:
вопрос немного не по теме
Вопрос действительно не по теме, вы не умеете пользоваться списками рассылок.
Как я подозреваю, ххх@bk.ru - это адрес какого-то списка рассылки, и письма рассылаются
с этим же обратным адресом. Exim не может отправить кому-то из списка письмо, о чем
честно уведомляет автора письма. В результате уведомление рассылается по всему списку.

Цитата:
куда копать, может кто подскажет?
Наведите порядок в работе списков рассылки.
Письма туда должны уходить либо с реальным обратным адресом автора письма,
либо, если обратной связи не подразумевается, то с каким-нибудь noreply@bk.ru
Автор: try09
Дата сообщения: 09.09.2014 13:33
Есть некоторые трудности в пользовании рассылкой, но проблема немного в другом.

Существует список расслыки, при отправке на его адрес начинается рассылка. ххх@bk.ru - это мой тестовый ящик, подписанный для того, что бы убедиться в проблеме, т.к. на корпоративные ящики письма приходят в единичном екземпляре. А на этот ящик за сегодняшнее утро пришло уже более 3 писем.

Рассылка настроена на отправку сообщений от имени списка.
Кусок лога показал, т.к. каждое сообщение пришло, хотя в логе говорило, что не может.
Автор: batonser
Дата сообщения: 09.09.2014 13:54

Цитата:
Здесь у тебя ошибка:
RCPT TO: jabber@kfm.kz
>>> using ACL "acl_check_rcpt"
>>> processing "warn"
>>> check set acl_m6 = ${lookup mysql{SELECT inactive FROM mailbox WHERE `username`='${quote_mysql:$sender_address}'}}
>>> =
Ты делаешь SELECT по адресу отправителя, а надо по адресу получателя.



т.е изначальна в вашей рекомендации была допущена ошибка!

Будем тогда ковырять на адрес получателя.
поковырял, попробовал правило вот так сделать:

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

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




Код: rcpt to: jabber@domen.ru
>>> 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
>>> domen.ru in "domen.ru"? yes (matched "domen.ru")
>>> domen.ru 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
>>> domen.ru in "domen.ru"? yes (matched "domen.ru")
>>> domen.ru in "!+local_domains"? no (matched "!+local_domains")
>>> deny: condition test failed
>>> processing "deny"
>>> check hosts = +relay_from_hosts
>>> host in "+relay_from_hosts"? yes (matched "+relay_from_hosts" - cached)
>>> check domains = !+local_domains
>>> domen.ru in "domen.ru"? yes (matched "domen.ru")
>>> domen.ru in "!+local_domains"? no (matched "!+local_domains")
>>> deny: condition test failed
>>> processing "deny"
>>> check domains = +local_domains
>>> domen.ru in "domen.ru"? yes (matched "domen.ru")
>>> domen.ru in "+local_domains"? yes (matched "+local_domains")
>>> check local_parts = ^[.] : ^.*[@%!/|]
>>> jabber in "^[.] : ^.*[@%!/|]"? no (end of list)
>>> deny: condition test failed
>>> processing "deny"
>>> check domains = !+local_domains
>>> domen.ru in "domen.ru"? yes (matched "domen.ru")
>>> domen.ru in "!+local_domains"? no (matched "!+local_domains")
>>> deny: condition test failed
>>> processing "accept"
>>> check local_parts = postmaster
>>> jabber 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 10.10.***.***
>>> IP address lookup using gethostbyaddr()
>>> IP address lookup failed: h_errno=1
LOG: [5248] no host name found for IP address 10.10.***.***
>>> host in "wildlsearch;/usr/local/etc/exim/whitelist_host_names"? no (failed to find host name for 10.10.***.***)
LOG: [5248] list matching forced to fail: failed to find host name for 10.10.***.***
>>> accept: condition test failed
>>> processing "accept"
>>> check domains = +local_domains
>>> domen.ru in "domen.ru"? yes (matched "domen.ru")
>>> domen.ru in "+local_domains"? yes (matched "+local_domains")
>>> check verify = recipient
>>> domen.ru in "domen.ru"? yes (matched "domen.ru")
>>> jabber@domen.ru in "*@domen.ru"? yes (matched "*@domen.ru")
LOG: [5248] "jabber@domen.ru" from env-to rewritten as "jabber@domen.ru" by rule 1
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing jabber@domen.ru
>>> jabber in "passwd;jabber : lsearch"? no (end of list)
>>> domen.ru in "domen.ru"? yes (matched "domen.ru")
>>> domen.ru in "! +local_domains"? no (matched "! +local_domains")
>>> calling system_aliases router
>>> domen.ru in "domen.ru"? yes (matched "domen.ru")
>>> jabber@domen.ru in "*@domen.ru"? yes (matched "*@domen.ru")
LOG: [5248] "jabber@domen.ru" from env-to rewritten as "jabber@domen.ru" by rule 1
>>> routed by system_aliases router
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing jabber@domen.ru
>>> jabber in "passwd;jabber : lsearch"? no (end of list)
>>> domen.ru in "domen.ru"? yes (matched "domen.ru")
>>> domen.ru in "! +local_domains"? no (matched "! +local_domains")
>>> calling dovecot_user router
>>> routed by dovecot_user router
>>> ----------- end verify ------------
>>> accept: condition test succeeded
250 Accepted
Автор: vlary
Дата сообщения: 09.09.2014 14:21
try09
Цитата:
Рассылка настроена на отправку сообщений от имени списка
Вот и получили, что просили, о чем я уже написал.
Цитата:
А на этот ящик за сегодняшнее утро пришло уже более 3 писем.
И остальным в списке, очевидно, тоже.
Либо меняй алгоритм работы списка, либо отлавливай в акцесс-листе на RCPT-TO:
письма о недоставке ( MAIL-FROM:<> ) в адрес списка, и меняй получателя на постмастера.
Либо лови такие сообщения системным фильтром
Chapter 45 - System-wide message filtering
Автор: batonser
Дата сообщения: 09.09.2014 14:27
Все заработало правило, до вел до ума!!

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}}

это если вдруг кому то нужно будет аналогичное проделать...

Спасибо Вам огромное, помогли очень очень.
Автор: vlary
Дата сообщения: 09.09.2014 14:44
batonser
Цитата:
т.е изначальна в вашей рекомендации была допущена ошибка!
Вполне возможно. Я ведь рекомендации даю не для копи-паста,
а чтобы человек сам начал шевелить мозгами в правильном направлении.

Цитата:
не могу понять правило вроде сработало, селект принял параметр 1, но письмо принялось  
Если немного подумать над тем, что я набросал на скорую руку, то правило
должно быть таким
deny message = "In my mailserver not stored this user"
hosts = ! +relay_from_hosts //внешние отправители
condition = ${if eq {$acl_m6}{1}}
условие domains = +local_domains уже проверено в set acl_m6

Добавлено:
Ну слава богу, поздравляю!
Автор: try09
Дата сообщения: 11.09.2014 10:04
"Наведите порядок в работе списков рассылки.
Письма туда должны уходить либо с реальным обратным адресом автора письма"

Поменял, проблема перестала появляться, спасибо большое. Одно не понятно, почему с прошлым режимом данный сервер рассылки как минимум 6 месяцев работал без проблем.
Автор: vlary
Дата сообщения: 11.09.2014 10:11
try09
Цитата:
Одно не понятно, почему с прошлым режимом данный сервер рассылки как минимум 6 месяцев работал без проблем.
Видимо, просто раньше не было проблем с доставкой почты адресам, которые в списке.
А когда с одним из адресов возникла проблема, очевидный косяк тут же вылез наружу.
Автор: Alukardd
Дата сообщения: 03.10.2014 19:07
dn1
Вопрос

Вот вам пример, проверил только что на себе:

auth_advertise_hosts = ${if or { {eq{$tls_cipher}{}} {match{$sender_host_name}{.*example\.pro\$}} }{}{*}}

В данном примере я просто реализовал проверку одного единственного домена. можно сделать чтение из файла. Собственно клиентам с домена example.pro не будет предоставлена возможность вводить команду AUTH.
Автор: dn1
Дата сообщения: 03.10.2014 20:33
Alukardd
Спасибо за подсказку)
Автор: Alukardd
Дата сообщения: 03.10.2014 21:41
dn1
Тут если что ещё не разрешается авторизовываться без ssl/tls, просто у меня оно уже было и я дописал к нему доп условие. Если у Вас нету сертификатов на почте то надо вырезать этот момент из проверки.
Автор: dn1
Дата сообщения: 06.10.2014 08:40
Alukardd
Сертификаты я начал использовать сразу после установки exim. Так что мне это подходит.
Автор: dn1
Дата сообщения: 06.10.2014 14:57
Alukardd
Извиняюсь, а как Вы проверяли работоспособность? Добавил себе. Пытался имитировать подключение exim -dh ip_адрес_хоста который я прописал в конфиге и спокойно ввожу команду AUTH... Естественно сначала убрал проверку tls для теста. Может что-то делаю не правильно... Хочу заблокировать 1und1.com (IP 217.160.87.99)
auth_advertise_hosts = ${if match{$sender_host_name}{/1und1\.com/}{}{*}}
Пробую exim -dh 217.160.87.99
Автор: Alukardd
Дата сообщения: 06.10.2014 15:32
dn1
Правил на однмо сервере, дальше делал реальное подключение с работы, а не тесты exim'а, хотя разницы быть не должно.

Регулярку на сколько я знаю в / / брать не надо. Навредит или нет хз, но без него как Вы можете наблюдать в моём примере всё работает точно.
Если там есть поддомены и письмо пойдёт оттуда, то писать надо как я показал Вам — .*1und1\.com$
Автор: dn1
Дата сообщения: 06.10.2014 16:04
Alukardd
Попробовал на своем рабочем домене...
Если делать локальный тест, то с Вашим правилом получаю на любые ip, после команды AUTH
503 AUTH command used when not advertised
Если стучаться с внешки
553 Initial data not expected

Не подскажите еще проверку в конфиге надо где-то в определенном месте ставить?..
Автор: Alukardd
Дата сообщения: 06.10.2014 16:39
dn1
На сколько я знаю, это стандартная переменная Exim'а, которая ограничивает вывод доступных методов для аутентификации по заданному условию. Вообще она создана для ограничения по ip адресам, но мы немного меняем ход событий за счёт условных выражений.
Цитата:
503 AUTH command used when not advertised
так и должно быть, именно это Вы и пытаетесь достичь.
Ну с внешки Вы что-то ещё забыли может? Например EHLO?
Если есть какие-то ошибки в написании выражения то они при попытке его проверить попадут в paniclog.
Автор: dn1
Дата сообщения: 06.10.2014 17:01
Alukardd

Цитата:
503 AUTH command used when not advertised

Есно это я и хочу получить) Только я написал
Цитата:
на любые ip, после команды AUTH

Да хоть яндексом пытаюсь представиться, получаю отлуп с этой ошибках, хотя должен делать только если совпадает с выражением, правильно же?
А с внешки ehlo не забыл... Ладно буду еще тестить. Не пойму где ошибка закралась...

Страницы: 123456789101112131415161718192021

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


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