exim+dovecot доставка писем пользователям

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
lexxx_88
проходил мимо

exim+dovecot доставка писем пользователям

Непрочитанное сообщение lexxx_88 » 2012-10-19 11:45:56

Здравствуйте. Почтовик поднимаю в первый раз. Далал по нескольким статьям но исходной была http://www.lissyara.su/articles/freebsd ... tfixadmin/

Система

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

mail3# uname -a
FreeBSD mail3.loc 9.0-RELEASE FreeBSD 9.0-RELEASE #0: Tue Jan  3 07:15:25 UTC 2012     root@obrian.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  i386
ПО

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

mail3# pkg_info |grep exim
exim-4.77           High performance MTA for Unix systems on the Internet
mail3# pkg_info | grep dovecot
dovecot-1.2.17      Secure and compact IMAP and POP3 servers
Конфиги
exim

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

  
#!/bin/sh

# Имя хоста. Используется в EHLO.
primary_hostname = mail.***.ru

# Вводим данные для подключения к MySQL серверу.
hide mysql_servers = localhost/exim/exim/exim

# Делаем список локальных доменов. Далее этот
# список будет фигурировать в виде +local_domains
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:192.168.0.0/16

# Вводим названия acl`ов для проверки почты.
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data

# Прикручиваем антивирус - при условии, что exim собран
# с его поддержкой. 
#av_scanner = clamd:/var/run/clamav/clamd

# Адрес куда слать на проверку спама (SpamAssasin), но я
# это не юзаю. Не так много у меня спама...
# spamd_address = 127.0.0.1 783

# Имя домена добавляемое для локальных отправителей (реальных
# юзеров системы) т.е. почта отправляемая от root, будет от
# root@домен_указанный_здесь. 
qualify_domain = mail.***.ru

# Имя хоста для ситуации, обратной предыдущей
qualify_recipient = mail.***.ru

# А это как раз кусок вышеописанного анахронизма - про почту в
# виде user@[222.222.222.222] - принимать её или нет.
allow_domain_literals = false

# Пользователь от которого работает exim
exim_user = mailnull

# группа в кторой работает exim
exim_group = mail

# запрещаем работу доставки под юзером root - в целях безопасности
never_users = root

# Проверяем соответствие прямой и обратной зон для всех хостов.
#host_lookup = *

rfc1413_query_timeout = 0s

# По дефолту, экзим отфутболивает все `неквалифицированные` адреса,
# состоящие тока из локальной части. Для того чтобы разрешить такие письма
# определённых хостов используются эти директивы:
# для `неквалифицированных` отправителей
sender_unqualified_hosts = +relay_from_hosts
# для `неквалифицированных` получателей
recipient_unqualified_hosts = +relay_from_hosts

# Если сообщение было недоставлено, то генерится соощение
# об ошибке. Если сообщение об ошибке не удалось доставить
# то оно замораживается на указанный в этом пункте срок,
# после чего снова попытка доставить его. При очередной
# неудаче - сообщение удаляется.
ignore_bounce_errors_after = 45m

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

# Список хостов, почта от которых принимается, несмотря
# на ошибки в HELO/EHLO (тут указана моя подсеть)
helo_accept_junk_hosts = 192.168.0.0/16

# Через какое время повторять попытку доставки
# замороженного сообщения
auto_thaw = 1h

# Приветствие сервера
smtp_banner = "$primary_hostname, ESMTP EXIM $version_number"

# Максимальное число одновременных подключений по
# SMTP. Рассчитывать надо исходя из нагрузки на сервер
smtp_accept_max = 50

# максимальное число сообщений принимаемое за одно соединение
# от удалённого сервера (или пользователя).
smtp_accept_max_per_connection = 25

# чё-то про логи и борьбу с флудом - я так понимаю -
# максимальное число сообщений записываемых в логи
smtp_connect_backlog = 30

# максимальное число коннектов с одного хоста
smtp_accept_max_per_host = 20

# Ход ладьёй - для увеличения производительности,
# директория `spool` внутри, разбивается на
# директории - это ускоряет обработку
split_spool_directory = true

# Если у сообщения много адресатов на удалённых хостах,
# то запускатеся до указанного числа максимально число
# параллельных процессов доставки
remote_max_parallel = 15

# при генерации сообщения об ошибке прикладывать
# не всё сообщение, а кусок (от начала) указанного
# размера (иногда полезно и целиком - в таком случае
# просто закомментируйте эту строку)
return_size_limit = 70k

# размер сообщения. 
message_size_limit = 64M

# разрешаем неположенные символы в HELO 
helo_allow_chars = _

# Принудительная синхронизация. .
smtp_enforce_sync = true

# Выбираем, что мы будем логировать
# + - писать в логи,
# - - Не писать в логи.
# +all_parents - все входящие?
# +connection_reject - разорваные соединения
# +incoming_interface - интерфейс (реально - IP)
# +lost_incoming_connections - потеряные входящие
# соединения
# +received_sender - отправитель
# +received_recipients - получатель
# +smtp_confirmation - подтверждения SMTP?
# +smtp_syntax_error - ошибки синтаксиса SMTP
# +smtp_protocol_error - ошибки протокола SMTP
# -queue_run - работа очереди (замороженные мессаги)
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
# Убираем собственную временную метку exim`a из логов, её ставит
# сам syslogd - нефига дублировать
syslog_timestamp = no
### конфигурация ACL для входящей почты
begin acl
# Эти правила срабатывают для каждого получателя
acl_check_rcpt:
  # принимать сообщения которые пришли с локалхоста,
 # не по TCP/IP
  accept  hosts = :

  # Запрещаем письма содержащие в локальной части
  # символы @; %; !; /; |. Учтите, если у вас было
  # `percent_hack_domains` то % надо убрать.
  # Проверяются локальные домены
  deny    message       = "incorrect symbol in address"
          domains       = +local_domains
          local_parts   = ^[.] : ^.*[@%!/|]

  # Проверяем недопустимые символы для
  # нелокальных получателей:
  deny    message       = "incorrect symbol in address"
          domains       = !+local_domains
          local_parts   = ^[./|] : ^.*[@%!] : ^.*/\\.\\./

  # Принимаем почту для постмастеров локальных доменов без
  # проверки отправителя 

  accept  local_parts   = postmaster
          domains       = +local_domains

  # Запрещщаем, если невозможно проверить отправителя
#  require verify        = sender

  # Запрещщаем тех, кто не обменивается приветственными
  # сообщениями (HELO/EHLO)
  deny    message       = "HELO/EHLO require by SMTP RFC"
          condition     = ${if eq{$sender_helo_name}{}{yes}{no}}

  # Принимаем сообщения от тех, кто аутентифицировался:
  accept  authenticated = *

# Рубаем нах, тех, кто подставляет свой IP в HELO
  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}}


# Рубаем тех, кто в HELO пихает мой IP
  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!"

# Рубаем тех, кто в HELO пихает только цифры
  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!"

  # Рубаем хосты типа *adsl*; *dialup*; *pool*;....
  deny    message       = "your hostname is bad (adsl, poll, ppp & etc)."
          condition     = ${if match{$sender_host_name} \
                               {adsl|dialup|pool|peer|dhcp} \
                               {yes}{no}}

  # Задержка. (это такой метод борьбы со спамом,)
  warn
        # ставим дефолтовую задержку в 20 секунд ПОКА ТЕСТ ЗАДЕРЖКУ УБРАЛ
        set acl_m0 = 0s
  warn
        # ставим задержку в 0 секунд своим хостам
        hosts = +relay_from_hosts
        set acl_m0 = 0s
  warn
        # пишем в логи задержку (если оно вам надо)
        logwrite = Delay $acl_m0 for $sender_host_name \
[$sender_host_address] with HELO=$sender_helo_name. Mail \
from $sender_address to $local_part@$domain.
        delay = $acl_m0


  # Проверка получателя в локальных доменах.
  # Если не проходит, то проверяется следующий ACL,
  # и если непрошёл и там - deny
  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

  # Разрешаем почту от доменов в списке relay_from_hosts
  accept  hosts         = +relay_from_hosts

  # Если неподошло ни одно правило - чувак явно ищет
  # открытый релей. Пшёл прочь. :)
  deny    message       = ""




# Тут идут ACL проверяющие содержимое (тело) письма.
# Без них будут пропускаться все сообщения.

acl_check_data:

  # Проверяем письмо на вирусы
 # deny malware = *
 # message = "In e-mail found VIRUS - $malware_name"

  # Если есть необходимость - тут проверки на спам

  # Пропускаем остальное
  accept



# чё делаем с почтой
begin routers

# Поиск маршрута к хосту в DNS.
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
dovecot_user:
  driver = accept
  user=dovecot
  group=mail
  condition = ${lookup mysql{SELECT `goto` FROM \
  `alias` WHERE \
  `address`='${quote_mysql:$local_part@$domain}' OR \
  `address`='${quote_mysql:@$domain}'}{yes}{no}}
  transport = dovecot_delivery


# начинаются транспорты - как доставляем почту
begin transports

# Доставка на удалённые хосты - по SMTP
remote_smtp:
  driver = smtp

# Доставка локальным адресатам - в dovecot
dovecot_delivery:
  driver = pipe
  #command = "/usr/local/libexec/dovecot/deliver -d $local_part@$domain"
  command = "/usr/local/libexec/dovecot/deliver  $local_part@$domain"
  message_prefix =
  message_suffix =
  delivery_date_add
  envelope_to_add
  return_path_add
  log_output
  user = mailnull
  group = mail
  #temp_errors = 64 : 69 : 70: 71 : 72 : 73 : 74 : 75 : 78

# Имя программы
address_pipe:
  driver = pipe
  return_output

# Транспорт для автоответов
address_reply:
  driver = autoreply



# Начинаются повторы недоставленных писем.
begin retry


# Address or Domain  Error   Retries
# -----------------  -----   -------
*                    *       F,2h,15m; G,16h,1h,1.5; F,4d,6h


# преобразование адресов. У меня такого нету.
begin rewrite


# Секция авторизации при отправке писем. 
begin authenticators


auth_plain:
  driver = dovecot
  public_name = PLAIN
  server_socket = /var/run/dovecot/auth-client
  server_set_id = $auth1

auth_login:
  driver = dovecot
  public_name = LOGIN
  server_socket = /var/run/dovecot/auth-client
  server_set_id = $auth1

auth_cram_md5:
  driver = dovecot
  public_name = CRAM-MD5
  server_socket = /var/run/dovecot/auth-client
  server_set_id = $auth1
Конфиг Dovecot

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

mail3# cat /usr/local/etc/dovecot.conf
    # будем использовать все протоколы
    protocols = imap imaps pop3 pop3s
    # лучше, когда на pop3/imap отдельный лог
    log_path = /var/log/dovecot.log
    info_log_path = /var/log/dovecot-info.log
    # SSL выключим, так как он обычно нафиг не нужен.
    ssl = no
    # не отключаем аутентификацию без зашифрованного пароля
    disable_plaintext_auth = no
    # почту будем хранить одним файлом в формате mbox в домашней папке пользователя
    # например для пользователя vasya почта для admin@vasiliy.net.ua будет находиться в:
    # /home/vasya/mail/vasiliy.net.ua/admin/
    #mail_location = maildir:/var/mail/exim/%d/%n
    mail_location = mbox:/var/spool/exim/mail/%d/%n
    # для pop3 вам необходимо будет авторизовываться используя полный адрес с доменом (admin@vasiliy.net.ua)
    pop3_uidl_format = %08Xu%08Xv
    # пусть будет
    auth_verbose = yes
    # перевод имени пользователя в нижний регистр (используется полный адрес с доменом)
    auth_username_format = %Lu
    # своя доставка dovecot - delivery

    protocol lda {
    # Куда слать письма про превышение квоты
    postmaster_address = lexxx@***.ru
    # путь к сокету
    #auth_socket_path = /var/run/dovecot/auth-master
    }


    auth default {
    # типы авторизации, они могут быть:
    #   plain login digest-md5 cram-md5 ntlm rpa apop anonymous gssapi
    # но включим только простые основые
    mechanisms = plain login
    passdb sql {
    args = /usr/local/etc/dovecot-sql.conf

  }
    userdb sql {
    # Путь к конфигурационному файлу SQL, велено смотреть дополнительную
    # инфу в файле doc/dovecot-sql.conf, тока такого файла нету :))) - не
    # инсталлится. В исходниках он есть. Там и смотрим.
    args = /usr/local/etc/dovecot-sql.conf
  }
    #passdb passwd-file {
    # файл, где будут храниться ящики, %d=домен
    #args = /etc/vmail/%d/passwd
    #deny = no
    #}
    #userdb passwd-file {
    #args = /etc/vmail/%d/passwd
    #}

    socket listen {
    # демон авторизации, его будет использовать exim
    client {
    path = /var/run/dovecot/auth-client
    mode = 0666
    }
    # иногда нужен и auth-master, лучше включить, пусть будет, он не помешает:
    master {
    path = /var/run/dovecot/auth-master
    mode = 0600
    }
    }
    }

   first_valid_uid = 25
   mail_privileged_group = mail
   mail_uid =mailnull
   mail_gid=mail
Вот с такими конфигами почта прекрасно отправляется но с получением возникли проблемы.

Лог

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

Oct 19 01:39:20 mail3 exim[3599]: Delay 0s for forward7.mail.yandex.net [77.88.61.37] with HELO=forward7.mail.yandex.net. Mail from ***@yandex.ru to user@***.ru.
Oct 19 01:39:20 mail3 exim[3599]: 1TOvw8-0000w3-HZ <= ***@yandex.ru H=forward7.mail.yandex.net [77.88.61.37] I=[192.168.14.11]:25 P=esmtp S=1251 id=479251350635954@web13e.yandex.ru from <***0@yandex.ru> for user@***.ru
[color=#0000FF]Oct 19 01:39:20 mail3 exim[3600]: 1TOvw8-0000w3-HZ ** user@***.ru R=dovecot_user T=dovecot_delivery: Child process of dovecot_delivery transport returned 127 (could mean unable to exec or command does not exist) from command: /usr/local/libexec/dovecot/deliver[/color]
Oct 19 01:39:20 mail3 exim[3604]: 1TOvw8-0000w8-LQ <= <> R=1TOvw8-0000w3-HZ U=mailnull P=local S=2076 from <> for ***@yandex.ru
Oct 19 01:39:20 mail3 exim[3600]: 1TOvw8-0000w3-HZ Completed
Oct 19 01:39:22 mail3 exim[3605]: 1TOvw8-0000w8-LQ => ***@yandex.ru <***@yandex.ru> R=dnslookup T=remote_smtp H=mx.yandex.ru [87.250.250.89] C="250 2.0.0 Ok: queued on mxfront37.mail.yandex.net as dFXKlRZh-dFXKPHCj"
Oct 19 01:39:22 mail3 exim[3605]: 1TOvw8-0000w8-LQ Completed

И с разу же на почу приходит отлуп что

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

This message was created automatically by mail delivery software.

A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:

  user@***.ru
    local delivery failed
Если я верно понимаю проблема с раскладкой сообщений deliver.
Подскажите пожалуйста что и где напутал?

Хостинговая компания 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/

Аватара пользователя
skeletor
майор
Сообщения: 2548
Зарегистрирован: 2007-11-16 18:22:04

Re: exim+dovecot доставка писем пользователям

Непрочитанное сообщение skeletor » 2012-10-19 13:41:38

Да, а именно проблема с выполнением команды /usr/local/libexec/dovecot/deliver. Вы всего лишь пропустили букву '-d' в команде

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

command = "/usr/local/libexec/dovecot/deliver  $local_part@$domain"
При этом закоментированная строка выше является верной.

lexxx_88
проходил мимо

Re: exim+dovecot доставка писем пользователям

Непрочитанное сообщение lexxx_88 » 2012-10-19 14:13:26

Спасибо за ответ. Строчку раскоментировал. Попробовал с кавычками и без...
Все попрежнему!
Лог

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

mail3# tail -f /var/log/maillog
Oct 19 04:05:47 mail3 exim[4264]: 1TOyDr-00016l-Af ** lexxx@***.ru R=dovecot_user T=dovecot_delivery: Child process of dovecot_delivery transport returned 127 (could mean unable to exec or command does not exist) from command: /usr/local/libexec/dovecot/deliver
Oct 19 04:05:47 mail3 exim[4268]: 1TOyDr-00016q-DQ <= <> R=1TOyDr-00016l-Af U=mailnull P=local S=2096 from <> for ***@yandex.ru
Oct 19 04:05:47 mail3 exim[4264]: 1TOyDr-00016l-Af Completed
Oct 19 04:05:48 mail3 exim[4269]: 1TOyDr-00016q-DQ => ***@yandex.ru <***@yandex.ru> R=dnslookup T=remote_smtp H=mx.yandex.ru [77.88.21.89] C="250 2.0.0 Ok: queued on mxfront8.mail.yandex.net as 5emOjqXV-5emesoWa"
Oct 19 04:05:48 mail3 exim[4269]: 1TOyDr-00016q-DQ Completed
Oct 19 04:08:35 mail3 exim[4310]: exim 4.77 daemon started: pid=4310, -q30m, listening for SMTP on port 25 (IPv4)
Oct 19 04:08:35 mail3 exim[4312]: 1TOaoF-000KgK-2C == root@mail.***.ru R=dnslookup T=remote_smtp defer (-53): retry time not reached for any host
Oct 19 04:08:35 mail3 exim[4314]: 1TOaoE-000KfF-Qm == root@mail.***.ru R=dnslookup T=remote_smtp defer (-53): retry time not reached for any host
Oct 19 04:08:35 mail3 exim[4316]: 1TOxHt-00012o-AD == root@mail.***.ru R=dnslookup T=remote_smtp defer (-53): retry time not reached for any host
Oct 19 04:08:35 mail3 exim[4318]: 1TOxHt-000140-Hm == root@mail.***.ru R=dnslookup T=remote_smtp defer (-53): retry time not reached for any host
Oct 19 04:09:25 mail3 exim[4321]: Delay 0s for forward13.mail.yandex.net [95.108.130.120] with HELO=forward13.mail.yandex.net. Mail from ***@yandex.ru to lexxx@***.ru.
Oct 19 04:09:25 mail3 exim[4321]: 1TOyHN-00017h-GJ <= ***@yandex.ru H=forward13.mail.yandex.net [95.108.130.120] I=[192.168.14.11]:25 P=esmtp S=1274 id=582241350644957@web19f.yandex.ru from <***@yandex.ru> for lexxx@***.ru
Oct 19 04:09:25 mail3 exim[4322]: 1TOyHN-00017h-GJ ** lexxx@***.ru R=dovecot_user T=dovecot_delivery: Child process of dovecot_delivery transport returned 127 (could mean unable to exec or command does not exist) from command: /usr/local/libexec/dovecot/deliver
Oct 19 04:09:25 mail3 exim[4326]: 1TOyHN-00017m-JF <= <> R=1TOyHN-00017h-GJ U=mailnull P=local S=2101 from <> for ***@yandex.ru
Oct 19 04:09:25 mail3 exim[4322]: 1TOyHN-00017h-GJ Completed
Oct 19 04:09:29 mail3 exim[4327]: 1TOyHN-00017m-JF => ***@yandex.ru <***@yandex.ru> R=dnslookup T=remote_smtp H=mx.yandex.ru [87.250.250.89] C="250 2.0.0 Ok: queued on mxfront32.mail.yandex.net as 9IZWAJlB-9KZiqbGi"
Oct 19 04:09:29 mail3 exim[4327]: 1TOyHN-00017m-JF Completed
Здесь лог от двух писем.

Аватара пользователя
skeletor
майор
Сообщения: 2548
Зарегистрирован: 2007-11-16 18:22:04

Re: exim+dovecot доставка писем пользователям

Непрочитанное сообщение skeletor » 2012-10-19 14:15:51

а команда правильно указана? /usr/local/libexec/dovecot/deliver
файл такой вообще есть? он имеет права на выполнение?


Аватара пользователя
skeletor
майор
Сообщения: 2548
Зарегистрирован: 2007-11-16 18:22:04

Re: exim+dovecot доставка писем пользователям

Непрочитанное сообщение skeletor » 2012-10-19 14:24:02

ясно, не хватает прав. сделайте

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

#chown mailnull /usr/local/libexec/dovecot/deliver
и попробуйте заново

lexxx_88
проходил мимо

Re: exim+dovecot доставка писем пользователям

Непрочитанное сообщение lexxx_88 » 2012-10-19 14:35:15

Сделал.
Теперь пишет это. Отлупов в почту не приходит, по крайней мере пока.
Лог

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

Oct 19 04:33:03 mail3 exim[4578]: Delay 0s for forward11.mail.yandex.net [95.108.130.93] with HELO=forward11.mail.yandex.net. Mail from user@yandex.ru to user@euronics96.ru.
Oct 19 04:33:03 mail3 exim[4578]: 1TOyeF-0001Bq-8C <= user@yandex.ru H=forward11.mail.yandex.net [95.108.130.93] I=[192.168.14.11]:25 P=esmtp S=1255 id=75861350646375@web20f.yandex.ru from <user@yandex.ru> for user@euronics96.ru
Oct 19 04:33:03 mail3 exim[4579]: 1TOyeF-0001Bq-8C == user@euronics96.ru R=dovecot_user T=dovecot_delivery defer (0): Child process of dovecot_delivery transport returned 75 (could mean temporary error) from command: /usr/local/libexec/dovecot/deliver

lexxx_88
проходил мимо
Сообщения: 3
Зарегистрирован: 2012-10-19 14:38:28

Re: exim+dovecot доставка писем пользователям

Непрочитанное сообщение lexxx_88 » 2012-10-19 15:23:42

лог /var/log/dovecot.log

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

Oct 19 04:52:09 deliver(user@***.ru): Error: userdb lookup: connect(/var/run/dovecot/auth-master) failed: Permission denied (euid=26(mailnull) egid=6(mail) missing +r perm: /var/run/dovecot/auth-master)
Oct 19 04:52:09 deliver(lexxx@***.ru): Error: userdb lookup: connect(/var/run/dovecot/auth-master) failed: Permission denied (euid=26(mailnull) egid=6(mail) missing +r perm: /var/run/dovecot/auth-master)
Хотя

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

mail3# ls -l
total 8
srw-rw-rw-  1 root  wheel      0 Oct 19 04:22 auth-client
srw-------  1 root  wheel      0 Oct 19 04:22 auth-master
srw-------  1 root  wheel      0 Oct 19 04:22 auth-worker.4477
srwxrwxrwx  1 root  wheel      0 Oct 19 04:22 dict-server
lrwx------  1 root  wheel     27 Oct 19 04:22 dovecot.conf -> /usr/local/etc/dovecot.conf
drwxr-x---  2 root  dovecot  512 Oct 19 04:22 login
-rw-------  1 root  wheel      5 Oct 19 04:22 master.pid
mail3#

lexxx_88
проходил мимо
Сообщения: 3
Зарегистрирован: 2012-10-19 14:38:28

Re: exim+dovecot доставка писем пользователям

Непрочитанное сообщение lexxx_88 » 2012-10-19 15:40:00

Изменил

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

master {
    path = /var/run/dovecot/auth-master
    mode = 0600
    }
Стало

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

master {
    path = /var/run/dovecot/auth-master
    mode = 0666
    }
Насколько это плохо для безопастности сервера?
Теперь такая ошибка

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

Oct 19 05:32:00 deliver(lexxx@***.ru): Fatal: setgid(26(mailnull)) failed with euid=26(mailnull), gid=6(mail), egid=6(mail): Operation not permitted (This binary should probably be called with process group set to 26(mailnull) instead of 6(mail))
Права на deliver

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

mail3# ls -l | grep deliver
-r-sr-sr-x  1 mailnull  mail   844328 Oct 16 02:05 deliver
По совету сначала skeletor а потом нашел похожую проблему в топике http://forum.lissyara.su/viewtopic.php?f=20&t=28534

lexxx_88
проходил мимо
Сообщения: 3
Зарегистрирован: 2012-10-19 14:38:28

Re: exim+dovecot доставка писем пользователям

Непрочитанное сообщение lexxx_88 » 2012-10-19 15:45:24

В dovecot-sql.conf меняю 26 на 6 для 'gid' т.е. запрос выглядит так:

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

 user_query = SELECT `maildir` AS `home`, 26 AS `uid`, 6 AS `gid`FROM `mailbox` WHERE `username` = '%n@%d' AND `active`='1'
Теперь все работает!!
skeletor спасибо!!