Проблема с написанием кондишена

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Проблема с написанием кондишена

Непрочитанное сообщение dikens3 » 2007-04-23 15:25:47

Полистал доки exim, что-то просветление не находит.
1. Где почитать примеры настроек condition'ов?
Интересуют:
${if eq}
${if match}
mysql; select * from xxx;


2. Собственно есть системные e-Mail'ы и им почта не нужна. Хочется их блокировать(только localhost от их имени будет слать)
Таблица aliases содержит поле dst_username (без домена) и ключик active=S (system)
Нужно блокировать всех, где local_parts = описанные в таблице с active=S.

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

# Прибиваем привилегированные E-mail'ы, им почта не нужна.
  deny    message       = "Unknown user block"
#          local_parts   = ${lookup mysql{SELECT dst_username FROM aliases WHERE dst_domain='${domain}' AND active='S'}}
Как-то странно, если одна запись на выходе(mysql = root), то работает, если несколько, тогда не работает. :-)

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

#         local_parts   = mysql; SELECT dst_username FROM aliases WHERE dst_domain='${domain}' AND active='S'
Блокирует всё.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2007-04-23 16:38:29

если несколько, в данном случае должен быть список - через двоеточие...
Убей их всех! Бог потом рассортирует...

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2007-04-23 17:00:01

http://forum.lissyara.su/viewtopic.php?t=3291

Тут я делал через dbm, работает. :-)
А вот mysql :-( Буду думать.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
Abigor
старшина
Сообщения: 425
Зарегистрирован: 2006-03-02 11:13:15
Откуда: РФ. г. Иркутск
Контактная информация:

Непрочитанное сообщение Abigor » 2007-04-23 17:55:58

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

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2007-04-23 18:04:03

Тут лис говорил что на этапе rcpt_to делать не следует, ибо ещё неизвестен точный размер письма и куча кривых почтовиков эти данные не послают или они не верные. (как сделал вобщем?)

Я пока в транспорты закинул, стандартно.

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

mysql_delivery:
..
..
Ограничение на размер входящего сообщения
message_size_limit = ${lookup mysql{MYSQL_SIZEMESS}{${value}M}{DEFAULT_SIZE_LIMIT}}

Общая квота:
quota = ${lookup mysql{MYSQL_QUOTA}{${value}M}{DEFAULT_QUOTA_LIMIT}}
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2007-04-23 18:19:19

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

 size_addition  	 smtp  	 integer  	 1024

   Если удалённый сервер SMTP указывает, что он поддерживает опцию SIZE в команде MAIL, exim использует её для передачи размера сообщения, в начале SMTP-транзакции.
Т.е. удалённые серваки могут не передавать SIZE. :-)
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2007-04-23 21:03:32

Abigor писал(а):я сейчас так же мучаюсь со списком.
есть алиас, скажем 10 адресов. задача, проверить квоту еще на этапе rcpt, есть хоть у одного из юзверей квота превышена, пинать всех 10 пользователей. для одного я уже сделал, все прекрасно, а вот для списа также мучаюсь, но идея есть, но врядли прокатит.
на этапе заголовков тока один реципиент...
ели тока рассыока открытая - но тогда таккже пинаться должно...

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

/usr/home/lissyara/>telnet localhost 25
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 ussr.lissyara.int.otradno.ru ESMTP Sendmail 8.13.8/8.13.8; Mon, 23 Apr 2007 22:01:57 +0400 (MSD)
helo ya.ru
250 ussr.lissyara.int.otradno.ru Hello localhost [127.0.0.1], pleased to meet you
mail from:<admin@lissyara.su>,<lissyara@lissyara.su>
250 2.1.0 <admin@lissyara.su>,<lissyara@lissyara.su>... Sender ok
rcpt to: lissyara
250 2.1.5 lissyara... Recipient ok
data
354 Enter mail, end with "." on a line by itself
test
.
250 2.0.0 l3NI1vmw001319 Message accepted for delivery
quit
221 2.0.0 ussr.lissyara.int.otradno.ru closing connection
Connection closed by foreign host.
/usr/home/lissyara/>
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2007-04-23 21:06:04

а в предыдущем я ошибся...

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

/usr/home/lissyara/>telnet localhost 25
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 ussr.lissyara.int.otradno.ru ESMTP Sendmail 8.13.8/8.13.8; Mon, 23 Apr 2007 22:04:01 +0400 (MSD)
mail from:<admin@lissyara.su>rcpt to: lissyara,root,mailnull
555 5.5.4 to parameter unrecognized
mail from:<admin@lissyara.su>
250 2.1.0 <admin@lissyara.su>... Sender ok
rcpt to: lissyara,root,mailnull
553 5.1.3 lissyara,root,mailnull... Invalid route address
rcpt to: lissyara, root, mailnull
555 5.5.4 root parameter unrecognized
rcpt to: lissyara, mailnull
555 5.5.4 mailnull parameter unrecognized
quit
221 2.0.0 ussr.lissyara.int.otradno.ru closing connection
Connection closed by foreign host.
/usr/home/lissyara/>      
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Abigor
старшина
Сообщения: 425
Зарегистрирован: 2006-03-02 11:13:15
Откуда: РФ. г. Иркутск
Контактная информация:

Непрочитанное сообщение Abigor » 2007-04-24 3:00:05

dikens3 писал(а):Тут лис говорил что на этапе rcpt_to делать не следует, ибо ещё неизвестен точный размер письма и куча кривых почтовиков эти данные не послают или они не верные. (как сделал вобщем?)
на самом деле пофиг что они не все правильно шлют, 10 писем из 100 то же результат, по этому у меня есть смысл такое навертеть, а то юзвери [классический секс],

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2007-04-24 8:05:03

тока предусмотри - может быть назадан (что в этом случае будет в переменной, и будет ли она - я не знаю - хотя в доках где-то это было описано)
Убей их всех! Бог потом рассортирует...

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2007-04-24 12:27:36

Я вот так сделал:

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

# Квота на входящее сообщение
MYSQL_SIZEMESS = SELECT `quota-in` FROM users WHERE username='${quote_mysql:$local_part}' AND domain='${quote_mysql:$domain}'
DEFAULT_SIZE_LIMIT = 25M

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

# Ограничение на приём сообщения для наших пользователей, если сообщение больше определённого размера не принимаем.
  deny    message       = Too big size of message. Message size limit = ${lookup mysql{MYSQL_SIZEMESS}{${value}M}{DEFAULT_SIZE_LIMIT}}.
          domains       = +local_domains
          condition     = ${if > {$message_size}{${lookup mysql{MYSQL_SIZEMESS}{${value}M}{DEFAULT_SIZE_LIMIT}}}}
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2007-04-24 13:27:35

Хочу сделать ограничение на объём отправляемого сообщения для наших пользователей.

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

# Ограничение на отправку сообщения для наших пользователей, если сообщение больше определённого размера не отправляем.
  deny    message       = 10K for $sender_address_domain $sender_address
          sender_domains = mydomain1.ru : mydomain2.ru
          condition     = ${if > {$message_size}{10K}}
Так работает :-)

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

  deny    message       = 10K for $sender_address_domain $sender_address
          sender_domains = +local_domains
          condition     = ${if > {$message_size}{10K}}
А так нет. Вот я не въеду, а почему собственно?
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2007-04-24 13:45:12

Вопрос снимается. В багах разыскал. Работать пока не будет. :-(
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Непрочитанное сообщение Alex Keda » 2007-04-24 14:19:14

dikens3 писал(а):Вопрос снимается. В багах разыскал. Работать пока не будет. :-(
непонял...
Убей их всех! Бог потом рассортирует...

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2007-04-24 14:57:46

Такой баг не только у меня, щас отпишусь разработчикам.

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

acl_check_rcpt:
  accept  hosts = :

  deny    message        = Too big size of message. Message size limit = 10K
          domains        = +local_domains
          condition      = ${if > {$message_size}{10K}}

  deny    message        = Too big size of message. Message size limit = 10K
          sender_domains = +local_domains
          condition      = ${if > {$message_size}{10K}}


I'm testing the first deny acl:
# exim -bh 192.168.2.4

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

>>> host in hosts_connection_nolog? no (option unset)
LOG: SMTP connection from [192.168.2.4]
>>> host in host_lookup? yes (matched "*")
>>> looking up host name for 192.168.2.4
>>> IP address lookup yielded dik.birzhaplus.ru.local
>>> gethostbyname looked up these IP addresses:
>>>   name=dik.birzhaplus.ru.local address=192.168.2.4
>>> checking addresses for dik.birzhaplus.ru.local
>>>   192.168.2.4 OK
>>> host in host_reject_connection? no (option unset)
>>> host in sender_unqualified_hosts? 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? no (option unset)
220-Welcome on our mail server!
220  newmail.birzhaplus.ru ESMTP
EHLO test
>>> host in pipelining_advertise_hosts? no (end of list)
>>> host in auth_advertise_hosts? yes (matched "*")
>>> host in tls_advertise_hosts? yes (matched "*")
250-newmail.birzhaplus.ru Hello dik.birzhaplus.ru.local [192.168.2.4]
250-SIZE 52428800
250-AUTH PLAIN LOGIN CRAM-MD5
250-STARTTLS
250 HELP
mail from:<postmaster@birzhaplus.ru>
250 OK
rcpt to:<postmaster@birzhaplus.ru>
>>> using ACL "acl_check_rcpt"
>>> processing "accept"
>>> check hosts = :
>>> host in ":"? no (end of list)
>>> accept: condition test failed
>>> processing "deny"
>>> check domains = +local_domains
>>> birzhaplus.ru in "birzhaplus.ru"? yes (matched "birzhaplus.ru")
>>> birzhaplus.ru in "+local_domains"? yes (matched "+local_domains")
>>> check condition = ${if > {$message_size}{10K}}
>>>                 =
>>> deny: condition test failed
>>> processing "deny"
>>> check sender_domains = +local_domains
>>> birzhaplus.ru in "birzhaplus.ru"? yes (matched "birzhaplus.ru")
>>> birzhaplus.ru in "+local_domains"? yes (matched "+local_domains")
>>> check condition = ${if > {$message_size}{10K}}
>>>                 =
>>> deny: condition test failed

Very good, sender_domains working.

I'm testing the second deny acl:
# exim -bh 192.168.2.4

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

>>> host in hosts_connection_nolog? no (option unset)
LOG: SMTP connection from [192.168.2.4]
>>> host in host_lookup? yes (matched "*")
>>> looking up host name for 192.168.2.4
>>> IP address lookup yielded dik.birzhaplus.ru.local
>>> gethostbyname looked up these IP addresses:
>>>   name=dik.birzhaplus.ru.local address=192.168.2.4
>>> checking addresses for dik.birzhaplus.ru.local
>>>   192.168.2.4 OK
>>> host in host_reject_connection? no (option unset)
>>> host in sender_unqualified_hosts? 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? no (option unset)
220-Welcome on our mail server!
220  newmail.birzhaplus.ru ESMTP
EHLO test
>>> host in pipelining_advertise_hosts? no (end of list)
>>> host in auth_advertise_hosts? yes (matched "*")
>>> host in tls_advertise_hosts? yes (matched "*")
250-newmail.birzhaplus.ru Hello dik.birzhaplus.ru.local [192.168.2.4]
250-SIZE 52428800
250-AUTH PLAIN LOGIN CRAM-MD5
250-STARTTLS
250 HELP
mail from:<postmaster@birzhaplus.ru>
250 OK
rcpt to:<test@mail.ru>
>>> using ACL "acl_check_rcpt"
>>> processing "accept"
>>> check hosts = :
>>> host in ":"? no (end of list)
>>> accept: condition test failed
>>> processing "deny"
>>> check domains = +local_domains
>>> mail.ru in ""? no (end of list)
>>> mail.ru in "+local_domains"? no (end of list)
>>> deny: condition test failed
>>> processing "deny"
>>> check sender_domains = +local_domains
>>> birzhaplus.ru in ""? no (end of list)
>>> birzhaplus.ru in "+local_domains"? no (end of list)
>>> deny: condition test failed

Why sender_domains = ""?


I have changed a condition on:

  deny    message        = Too big size of message. Message size limit = 10K
          sender_domains = birzhaplus.ru : birzhaplus.nnov.ru
          condition      = ${if > {$message_size}{10K}}

# exim -bh 192.168.2.4

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

>>> host in hosts_connection_nolog? no (option unset)
LOG: SMTP connection from [192.168.2.4]
>>> host in host_lookup? yes (matched "*")
>>> looking up host name for 192.168.2.4
>>> IP address lookup yielded dik.birzhaplus.ru.local
>>> gethostbyname looked up these IP addresses:
>>>   name=dik.birzhaplus.ru.local address=192.168.2.4
>>> checking addresses for dik.birzhaplus.ru.local
>>>   192.168.2.4 OK
>>> host in host_reject_connection? no (option unset)
>>> host in sender_unqualified_hosts? 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? no (option unset)
220-Welcome on our mail server!
220  newmail.birzhaplus.ru ESMTP
EHLO test
>>> host in pipelining_advertise_hosts? no (end of list)
>>> host in auth_advertise_hosts? yes (matched "*")
>>> host in tls_advertise_hosts? yes (matched "*")
250-newmail.birzhaplus.ru Hello dik.birzhaplus.ru.local [192.168.2.4]
250-SIZE 52428800
250-AUTH PLAIN LOGIN CRAM-MD5
250-STARTTLS
250 HELP
mail from:<postmaster@birzhaplus.ru>
250 OK
rcpt to:<test@mail.ru>
>>> using ACL "acl_check_rcpt"
>>> processing "accept"
>>> check hosts = :
>>> host in ":"? no (end of list)
>>> accept: condition test failed
>>> processing "deny"
>>> check domains = +local_domains
>>> mail.ru in ""? no (end of list)
>>> mail.ru in "+local_domains"? no (end of list)
>>> deny: condition test failed
>>> processing "deny"
>>> check sender_domains = birzhaplus.ru : birzhaplus.nnov.ru
>>> birzhaplus.ru in "birzhaplus.ru : birzhaplus.nnov.ru"? yes (matched "birzhaplus.ru")
>>> check condition = ${if > {$message_size}{10K}}
>>>                 =
>>> deny: condition test failed

Here the condition sender_domains is carried out.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
Abigor
старшина
Сообщения: 425
Зарегистрирован: 2006-03-02 11:13:15
Откуда: РФ. г. Иркутск
Контактная информация:

Непрочитанное сообщение Abigor » 2007-04-24 17:35:50

ну не знаю, я себе сделал ограничение на входящие и исходящие письмо для смертных, уже как три месяца нормально все пашет.

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2007-04-24 17:47:15

Давай делись конфигами, сделал, сделал. А толку, похоже одну работу делаем по отдельности.

Я проблему с системными пользователями решил, неправильный запрос mysql сделал. Сам мудак.

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

MYSQL_SYSTEM_USERS      = SELECT dst_username FROM aliases WHERE dst_username='$local_part' AND dst_domain='${domain}' AND active='S'

.ifdef MYSQL_SYSTEM_USERS
# Прибиваем привилегированные E-mail'ы, им почта не нужна.
  deny    message       = "System user"
          local_parts   = ${lookup mysql{MYSQL_SYSTEM_USERS}}
.endif
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2007-04-24 17:49:15

Ограничение на размер входящий сообщений:

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

# Квота на входящее сообщение
MYSQL_SIZEMESS          = SELECT `quota-in` FROM users WHERE username='${quote_mysql:$local_part}' AND domain='${quote_mysql:$domain}'
DEFAULT_SIZE_LIMIT      = 25M
MYSQL_ALIAS_QUOTA       = SELECT `quota-in` FROM users WHERE username=(SELECT recipients FROM aliases WHERE dst_username='${quote_mysql:$local_part}' AND dst_domain='${quote_mysql:$domain}')

# Квота на исходящее сообщение
MYSQL_MESSOUT           = SELECT `quota-out` FROM users WHERE username='${quote_mysql:$local_part}' AND domain='${quote_mysql:$domain}'
DEFAULT_MESSOUT_LIMIT   = 25M


.ifdef MYSQL_SIZEMESS
# Ограничение на приём сообщения для наших пользователей, если сообщение больше определённого размера не принимаем.
  deny    message       = Too big size of message. Message size limit = ${lookup mysql{MYSQL_SIZEMESS}{${value}M}{DEFAULT_SIZE_LIMIT}}.
          domains       = +local_domains
          condition     = ${if > {$message_size}{${lookup mysql{MYSQL_SIZEMESS}{${value}M}{DEFAULT_SIZE_LIMIT}}}}
.endif

.ifdef MYSQL_ALIAS_QUOTA
# Ограничение на приём сообщения для алиасов наших пользователей, если сообщение больше определённого размера не принимаем.
  deny    message       = Too big size of message. Message size limit = ${lookup mysql{MYSQL_ALIAS_QUOTA}{${value}M}{DEFAULT_SIZE_LIMIT}}.
          domains       = +local_domains
          condition     = ${if > {$message_size}{${lookup mysql{MYSQL_ALIAS_QUOTA}{${value}M}{DEFAULT_SIZE_LIMIT}}}}
.endif
Алиасы у меня пишутся без домена. :-) Поэтому можно сконструировать вложенный запрос.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
Abigor
старшина
Сообщения: 425
Зарегистрирован: 2006-03-02 11:13:15
Откуда: РФ. г. Иркутск
Контактная информация:

Непрочитанное сообщение Abigor » 2007-04-24 17:56:33

ну, у меня системных юзверей нету.

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

acl_check_rcpt:

#warn log_message = message size: $message_size

#--- провека квоты на размер отправляемого письма
deny    message = Razmer otpravljaemogo pisma prevyshen!!! $message_size byte
#    hosts = 10.1.10.13
    set acl_m0 = ${lookup mysql{SELECT username,mess_quota_out FROM `mailbox` \
                                WHERE `username`='${quote_mysql:$sender_address}'}}
    condition = ${if eq {} {${extract{username}{$acl_m0}}}{No}{Yes}}
#    set acl_m3 = ${extract{mess_quota_out}{$acl_m0}}
    condition = ${if > {$message_size} {${extract{mess_quota_out}{$acl_m0}}}{Yes}{No}}
#--- end

#--- провека квоты на размер полученного письма
deny    message = Razmer vkhodjashchego pisma prevyshen!! $message_size byte
#    hosts = 10.1.10.13
    set acl_m1 = ${lookup mysql{SELECT username,mess_quota_in FROM `mailbox` \
                                WHERE `username`='$local_part@$domain'}}
    condition = ${if eq {} {${extract{username}{$acl_m1}}}{No}{Yes}}
#    set acl_m2 = ${extract{mess_quota_in}{$acl_m1}}
    condition = ${if > {$message_size}{${extract{mess_quota_in}{$acl_m1}}}{Yes}{No}}
#--- end
вообще надо делать две проверки на размер письма, одну еще на этапе rcpt а второю на этапе data, так как если отправитель или получатель юзают esmtp то размер известен сразу, а если просто smtp то он будет известен только в data, перую я проверку сделал, а вот вторую руки не доходят, квоты на вх. и ис. письма у меня разные =)

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2007-04-24 18:06:44

Abigor писал(а):ну, у меня системных юзверей нету.
У меня тоже, но если потребуется создать пользователя для переписки только внутри наших доменов, то очень нужная вещь понимаешь.. :-)
вообще надо делать две проверки на размер письма, одну еще на этапе rcpt а второю на этапе data, так как если отправитель или получатель юзают esmtp то размер известен сразу, а если просто smtp то он будет известен только в data, перую я проверку сделал, а вот вторую руки не доходят, квоты на вх. и ис. письма у меня разные =)
Спасибо за разъяснение esmtp, не знал. Тут есть проблема, domains = +local_domains в acl_data не работает. :-) Буду думать что-нибудь.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
Abigor
старшина
Сообщения: 425
Зарегистрирован: 2006-03-02 11:13:15
Откуда: РФ. г. Иркутск
Контактная информация:

Непрочитанное сообщение Abigor » 2007-04-25 2:42:15

ну, мнин, не вижу проблем, сделать acl что юзверю можно слать письмо только на определенный список адресов если честно.

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2007-04-25 11:57:48

Abigor писал(а):ну, мнин, не вижу проблем, сделать acl что юзверю можно слать письмо только на определенный список адресов если честно.
У меня есть clamav, который любит посылать уведомления от имени clamav@domain.ru

Стоит проверка:
require verify = sender

Письмо принимается(это же не по tcp/ip) и рикошетом отправляются на postmaster@domain.ru

Отсюда:
1. Создать alias clamav@domain.ru
2. Запретить для него принимать почту.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
Urgor
лейтенант
Сообщения: 669
Зарегистрирован: 2006-03-14 16:30:18
Откуда: Гилея (СПб)
Контактная информация:

Непрочитанное сообщение Urgor » 2007-04-25 14:22:01

dikens3 писал(а):
Abigor писал(а):ну, у меня системных юзверей нету.
У меня тоже, но если потребуется создать пользователя для переписки только внутри наших доменов, то очень нужная вещь понимаешь.. :-)
Я у себя сделал так:

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

  deny   message        = Sorry. Sender Access Limited.
         hosts          = +relay_from_hosts
         domains        = !+local_domains
         senders        = ${lookup mysql{SELECT id FROM users \
                            WHERE `id`='${quote_mysql:$sender_address}' \
                            and `noinet`='1'}}

  accept  authenticated = *

  deny   message        = Sorry. Recipient Access Limited.
         hosts          = !+relay_from_hosts
         domains        = +local_domains
         recipients     = ${lookup mysql{SELECT id FROM users \
                            WHERE id='${quote_mysql:$local_part@$domain}' \
                              AND `noinet`='1'}}
И добил поле noinet, если в нем 1, то только внутри своего домена....
Власть в руках у чужаков, и ты им платишь дань...

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2007-04-25 15:13:24

Нормально.

А как ты проверяешь обратный адрес пользователя?
deny message = Sorry. Sender Access Limited.
hosts = +relay_from_hosts
domains = !+local_domains
senders = ${lookup mysql{SELECT id FROM users \
WHERE `id`='${quote_mysql:$sender_address}' \
and `noinet`='1'}}
Ведь согласно этому, если обратный адрес

1. user@Внешний_домен.ru тогда твой блок не работает.
2. user-с-отправкой_в_мир@твой_домен.ru тогда твой блок не работает.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
Urgor
лейтенант
Сообщения: 669
Зарегистрирован: 2006-03-14 16:30:18
Откуда: Гилея (СПб)
Контактная информация:

Непрочитанное сообщение Urgor » 2007-04-26 9:37:40

1. user@Внешний_домен.ru тогда твой блок не работает.
2. user-с-отправкой_в_мир@твой_домен.ru тогда твой блок не работает.
Допиши проверку Если АдресВПисьме != УчеткеВАутентификаторе то всех в лес :)
Власть в руках у чужаков, и ты им платишь дань...