Страница 3 из 8

Re: Авторизация Exim

Добавлено: 2008-10-02 10:47:28
schizoid
На какие папки ? /var/mail - drwxrwxr-x root
не верно. с такими правами довекот не сможет создать там папки
долен быть владельцем пользователь ексима

Re: Авторизация Exim

Добавлено: 2008-10-02 12:06:30
fly
Вроде разобрался со всем кроме пары весчей

1. нет в папке LIBEXEC такого как deliver из-за чего, естественно раздача почты не может произойти, о чем и сигнализируют логи
2. Clamav почемуто не захотел стать у меня на системе

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

 ../libclamav/.libs/libclamav.so: undefined reference to `gethostbyname_r'
*** Error code 1

Stop in /usr/ports/security/clamav/work/clamav-0.94/clamscan.
*** Error code 1

Stop in /usr/ports/security/clamav/work/clamav-0.94.
*** Error code 1

Stop in /usr/ports/security/clamav/work/clamav-0.94.
*** Error code 1

Stop in /usr/ports/security/clamav.
*** Error code 1

Stop in /usr/ports/security/clamav.
Пришлось выкинуть из конфига эксима проверку тела письма

3. Какие должны быть права на папку /var/mail/exim и кто владелец:группа. А то пришлось 777 дать на нее.

Подскажите плиз, самое главное как наладить локальную раздачу почты(если не с пом. деливер то как ? или как деливер починить?)
Спасибо!

Re: Авторизация Exim

Добавлено: 2008-10-02 12:58:18
fly
ага так это не только у меня ...


из статьи, по которой все подымал:
1. С ним в комплекте должна идти утилита delivery - она занимается доставкой почты в ящики пользователей. Её нет... Почему - непонятно. Поэтому пришлось раскладывать самим экзимом.
Подскажите как раскладывать самими эксимом.

Re: Авторизация Exim

Добавлено: 2008-10-02 14:20:17
lerryc
по поводу dilivery
у меня gentoo - поэтому нужно учитывать расхождения с бсд
====
расположение : /usr/share/libexec/dovecot/delivery
появляется при сборке dovecot только с опцией pop3d
поэтому пришлось сначала ставить dovecot, потом сносить pop3d, потом ставить екзим (из-за конфликта пакетов)
=====

по поводу доставки екзимом

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

local_delivery:
driver = appendfile
directory = /var/mail/$local_part/.maildir
maildir_format
delivery_date_add
envelope_to_add
return_path_add
group = mail
mode = 0660
у меня так например

Квоты ?

Добавлено: 2008-10-02 14:26:29
fly
Спасибо за помощь.
Я сделал как тут : http://www.lissyara.su/?id=1175
все заработало отличнейшим образом.

Только вот теперь смотрю и не пойму как можно выставить максимальный размер ящика, т.е. квоту.
В Postfixadmin при создании ящика ничего такого нет.
а базе в таблице maildir есть поле qouta оно по умолчанию = 0 (это безлимит насколько я знаю)
пробовал ставить там например 1(1 мегабайт наверно или как ?) - нет эфекту - почта проходит и большего размера(правда не перегружал ексим)

Как быть с квотами ?

Re: Авторизация Exim

Добавлено: 2008-10-02 17:09:55
Alex_hha
В Postfixadmin при создании ящика ничего такого нет.
все там есть, смотри внимательнее
а базе в таблице maildir есть поле qouta оно по умолчанию = 0 (это безлимит насколько я знаю)
пробовал ставить там например 1(1 мегабайт наверно или как ?)
квота указывается в байтах!!!
нет эфекту - почта проходит и большего размера(правда не перегружал ексим)
а ты exim сообщил использовать квоты?

Квоты

Добавлено: 2008-10-02 18:10:58
fly
Хорошо по порядку
во вложении скрин создания ящика - не вижу квот. Может это не там добавляется?
а где указать эксиму использование квот ? в конфиге нет ничего похожего на quota или это еще при сборке указывается ?

quota

Добавлено: 2008-10-02 19:34:49
Fly
Все нашел где отключено было
оказалось в postfixadmin в конф файле
нужна такая строка:

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

$CONF['quota'] = 'YES';
Только теперь новый прикол - квота то есть, но почта продолжает приниматься не зависимо от того что уже превышено значение квоты.

Re: Авторизация Exim

Добавлено: 2008-10-03 12:32:31
Alex_hha
Только теперь новый прикол - квота то есть, но почта продолжает приниматься не зависимо от того что уже превышено значение квоты.
еще раз, как ты сообщил о квотах exim? Или что ты там используешь в качестве LDA

Quota

Добавлено: 2008-10-03 13:17:49
fly
Так кажись разобрался.
Т.к. я использую доставку не с помощью довекота(потомучто модуль delivery не ставиться почемуто, чему объяснение я не нашел), а с помощью mysql_deliver, то все что я указывал довекоту про кевоту до фени.

В итоге сейчас квота разаботала таким образом

вот кусок из конфига эксима где описана доставка :

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

mysql_delivery:
    driver = appendfile
    check_string = ""
    create_directory
    delivery_date_add
    directory = ${lookup mysql{SELECT CONCAT('/usr/mail/exim/', `maildir`) \
                FROM `mailbox` WHERE `username`='${local_part}@${domain}'}}
    directory_mode = 770
    envelope_to_add
    group = mail
    maildir_format
    maildir_tag = ,S=$message_size
    message_prefix = ""
    message_suffix = ""
    mode = 0600

    quota = ${lookup mysql{SELECT quota FROM \
                 mailbox WHERE `username`='${local_part}@${domain}'}}
    quota_size_regex = S=(\d+)$
    quota_warn_threshold = 95%

в логах при привышении квоты вижу такое:

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

 exim[4493]: 1KlkJ9-0001AS-5P == mukhovaty.valentin@konark.kh.ua R=mysqluser T=mysql_delivery defer (-22): mailbox is full (MTA-imposed quota exceeded while writing to tmp/1223038980.H681810P4494.post.konark.kh.ua)
Вот все отлично. Но есть одно но - никому не приходит уведомление о том что ящик полон ни отправителю ни получателю. Письмо от отпрвителя уходит без всяких проблем но получателю так и не доходит.

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

quotas auth

Добавлено: 2008-10-04 16:39:50
fly_
Хммм ... неужели про сообщения о превышении квоты никто не знает?
Я погуглил и нашел вот что

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

 quota = ${lookup mysql{SELECT quota FROM \
    mailbox WHERE `username`='${local_part}@${domain}'}}
    quota_size_regex = S=(\d+)$
    quota_warn_message = "\
        To: $local_part@$domain\n\
        Subject: Your mailbox\n\n\
        This message is automatically created \
        by mail delivery software.\n\n\
        The size of your mailbox has exceeded \
        a warning threshold that is\n\
        set by the system administrator.\n"
    quota_warn_threshold = 95%
Только сообщене не приходит =(

И вылез еще один бок из-за того, как я понимаю, что мой почтовик во внутренней сети, а с внешнего адресса на него проброшены порты 25 и 110. В этом случае получается, что все отправители будут из локальной сети, так как запросы извне приходят на внешний адресс(это другой комп не тот на котором эксим) а там пересылаются на внутренний адресс почтовика, естественно камп, который смотрит в инет, обращается к почтовику от своего ИП.
Т.Е. получается что для моего домена можно откуда угодно отправить письмо от любого ящика, зная его имя без пароля, не проходя аутентификацию (а на нелокальные домены не отсылает, к счастью). А это ж прогон - например "сотрудник А" возмет и напишет письмо от моего ящика на ящик директора и напишет там что я, типа, про директора думаю ну и тп.

В общем я тут крутил крутил конфиг эксима, но толкового ничего не получается(не хватает знани о том как правильно настроить ACL) - хочу чтобы никто не мог отправлять почту без аутентификации, ни локалка никто короче.

Посоветуйте что-нибудь.

Вот конфиг мой на всяк случай, который на данный момент.

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

primary_hostname = post.'тут мой домен'
hide mysql_servers = localhost/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:127.0.0.0/8
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data
qualify_domain = "тут мой домен"
qualify_recipient = "тут мой домен"
allow_domain_literals = false
exim_user = mailnull
exim_group = mail
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
freeze_tell = support@"мой домен"
auto_thaw = 1h
smtp_banner = "Spamers mast die ! (fly)"
smtp_accept_max = 50
smtp_accept_max_per_connection = 50
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 = 50M
helo_allow_chars = _
smtp_enforce_sync =false
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   = ^[./|] : ^.*[@%!] : ^.*/\\.\\./
  require verify        = sender
  deny    message       = "what abaut HELO/EHLO ? ".
          condition     = ${if eq{$sender_helo_name}{}{yes}{no}}

  accept  authenticated = *

  deny    message       = "Your IP in HELO - access denied!"
          hosts         =  * : !+relay_from_hosts #: !81-196.lissyara.su
          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       = "main 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       = "can not be only number in HELO!"
  deny    condition     = ${if eq{$sender_address}{}{yes}{no}}.
          hosts         = !127.0.0.1 : !localhost : *.
          message       = "? ?????? HELO ???????! ?? ?? RFC...".
  deny    condition     = ${if match{$sender_address}{\N^\s+$\N}{yes}{no}}.
          hosts         = !127.0.0.1 : !localhost : *.
          message       = "? ?????? HELO ?????? (???? ???????)?! ?? ?? RFC...".
  deny    condition     = ${if eq{$sender_address}{}{yes}{no}}.
          hosts         = !127.0.0.1 : !localhost : *.
          message       = "Where sender of this mail?!".
  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 = 5s
  warn
        hosts = +relay_from_hosts
        set acl_m0 = 3s
  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       = "In my mailserver not stored this user"
          verify        = recipient
  accept  domains       = +relay_to_domains
          endpass
          message       = "main server not know how 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 : \
                          dynablock.njabl.org

  accept  hosts         = +relay_from_hosts
  deny    message       = "--===You made some errors===--."
acl_check_data:
 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

mysqluser:
  driver = accept
  condition = ${if eq{}{${lookup mysql{SELECT `maildir` FROM `mailbox` \
             WHERE `username`='${quote_mysql:$local_part@$domain}'}}}{no}{yes}}
transport = mysql_delivery

begin transports
remote_smtp:
  driver = smtp

mysql_delivery:
    driver = appendfile
    check_string = ""
    create_directory
    delivery_date_add
    directory = ${lookup mysql{SELECT CONCAT('/usr/mail/exim/', `maildir`) \
                FROM `mailbox` WHERE `username`='${local_part}@${domain}'}}
    directory_mode = 770
    envelope_to_add
    group = mail
    maildir_format
    maildir_tag = ,S=$message_size
    message_prefix = ""
    message_suffix = ""
    mode = 0600
   quota = ${lookup mysql{SELECT quota FROM \
    mailbox WHERE `username`='${local_part}@${domain}'}}
    quota_size_regex = S=(\d+)$
    quota_warn_message = "\
        To: $local_part@$domain\n\
        Subject: Your mailbox\n\n\
        This message is automatically created \
        by mail delivery software.\n\n\
        The size of your mailbox has exceeded \
        a warning threshold that is\n\
        set by the system administrator.\n"
    quota_warn_threshold = 95%
    address_file:
    driver = appendfile
    delivery_date_add
    envelope_to_add
    return_path_add
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


В основном конфиг из статьи, нет только проверки на вирусы и доставка не довекотом, ну и мелочи там. Все правила acl на работоспособность не проверял. Очень нужно решить проблему с аутентификацией от локальной сети на локальный домен(а то сейчас без пароля можно слать =( ).
Спасибо.

Re: Авторизация Exim

Добавлено: 2008-10-10 12:35:56
fly
Хмм... неужели никто с таким не сталкивался ?
или все забили на эту тему =(

Re: Авторизация Exim

Добавлено: 2008-10-10 12:43:42
Alex Keda
ну, я например вопроса не понял...

Re: Авторизация Exim

Добавлено: 2008-10-10 13:00:03
fly
Вопрос такой.

Есть у меня например 10 ящиков. test1@my_domain...test10@my_domain.
Хочу, чтобы никто никуда не мог отсылать письма не пройдя авторизацию. С данными настройками получается так : любой из ящиков может отправить письмо на локальный домен на любой из ящиков без авторизации. Т.е. я могу написать письмо от ящика test1 на ящик test5 без авторизации(опция авторизация SMTP в MUA попросту отключена). Но на любой другой домен(не локальный) - без авторизации не проходит.

Конфиг если что - выше.

Re: Авторизация Exim

Добавлено: 2008-10-10 18:58:12
fly
Люди добрые ау =)
Подсобите новичку.

Re: Авторизация Exim

Добавлено: 2008-10-10 21:22:15
dikens3
fly писал(а):Вопрос такой.

Есть у меня например 10 ящиков. test1@my_domain...test10@my_domain.
Хочу, чтобы никто никуда не мог отсылать письма не пройдя авторизацию.
С данными настройками получается так : любой из ящиков может отправить письмо на локальный домен на любой из ящиков без авторизации. Т.е. я могу написать письмо от ящика test1 на ящик test5 без авторизации(опция авторизация SMTP в MUA попросту отключена). Но на любой другой домен(не локальный) - без авторизации не проходит.
Конфиг если что - выше.

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

  accept  domains  = +local_domains
          endpass
          message       = "In my mailserver not stored this user"
          verify        = recipient
Этот фильтр как работает? Что он делает?
Попадёт ли под него пользователь не прошедший авторизацию?



Мой вопрос к тебе такой, каким образом ты отделяешь своих от чужих? (IP? Авторизация?) почему не происходит блокировки ранее?

К примеру прибивать всех, кто отправляет от имени *@мой_домен.ru или с диапазона нашей локальной сети не аутентифицировавшись !!

Re: Авторизация Exim

Добавлено: 2008-10-11 18:50:07
fly
dikens3 писал(а):
fly писал(а): К примеру прибивать всех, кто отправляет от имени *@мой_домен.ru или с диапазона нашей локальной сети не аутентифицировавшись !!
Вот я ж и спрашиваю, как мне прибить всех (локальных и не локальных) кто не прошел аутентификацию. Я не силен в правилах ексима. Посоветуйте чтонить.

Re: Авторизация Exim

Добавлено: 2008-10-11 18:56:54
dikens3
Ты ещё несовсем понимаешь работу почтового сервера.

Для своего домена ты обязан принимать почту без авторизации !!! Иначе как тебe придёт почтa от того же mail.ru?

Re: Авторизация Exim

Добавлено: 2008-10-11 23:37:53
fly
Хмм а что тогда в этой ситуации можно придумать?

Re: Авторизация Exim

Добавлено: 2008-10-12 8:31:36
dikens3
fly писал(а):Хмм а что тогда в этой ситуации можно придумать?
Не торопиться, а спокойно читать доки, пробовать, просветление придёт. Потом вопросы сами отпадут.

Re: Авторизация Exim

Добавлено: 2008-10-13 10:46:04
fly
Ну я то и написал сюда, потому что ищу совета от людей , которые уже сталкивались с этим. Чтобы на одни и те же грабли не наступать, как говориться. А то что доки читать нада это понятно. ЩАс этим и занят, но пока ничего подходящего не придумал.

Может кто подсказать правило, чтобы заставлять аутентифицироваться юзеров, которым выдан ящик(ну т.е. все ящики на серваке) при использовании смтп при отправке на свой же домен.

Re: Авторизация Exim

Добавлено: 2008-10-31 10:36:52
fly
Как должно выглядить правило, которое бы рубало всех юзеров, которые есть в базе Mysql в таблице Exim в поле Mailbox. И запихнуть это правило после правила разрешающего аутентифицированых юзеров. Может тем самым и получится организовать то о чем я ранее спрашивал ?

Re: Авторизация Exim

Добавлено: 2008-11-16 18:28:24
harmless
походу в новых версиях мускула нужно менять

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

) TYPE=MyISAM COMMENT='Exim and dovecot Admin - Virtual Vacation';
на

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

) ENGINE=MyISAM COMMENT='Exim and dovecot Admin - Virtual Vacation';
может я ошибаюсь

Re: Авторизация Exim

Добавлено: 2008-11-17 17:49:48
Stepler
извините за тупой вопрос.. снес систему
забыл ссылку на админку. вспомнить не могу. 3 сутки без сна в башке каша

снимаю. вопрос .. нашёл..

Re: Авторизация Exim

Добавлено: 2008-11-20 10:15:44
Turbo
А как без постфиксадмина добавить-убрать пользователя ? :bn:
а то у меня почемута он не прикручивается