Postfix: не работает почта для локальных пользователей

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Strycker
рядовой
Сообщения: 20
Зарегистрирован: 2010-04-27 9:36:37

Postfix: не работает почта для локальных пользователей

Непрочитанное сообщение Strycker » 2010-07-09 22:10:46

Добрый вечер, уважаемые.

Подскажите где грабли, никак разобраться не могу. Ситуация в чём. Мне надо получать и отправлять почту виртуальных и локальных пользователей. Пока хотелось бы только для одного доменного имени, а в перспективе для нескольких. Что поставил: postfix, dovecot, mysql, postfixadmin, roundcube. По одной из хаутушек настроил всё. Почта для виртуальных пользователей приходит/отправляется, для локальных - нет. В логе dovecot'а видно, что он пытается найти пользователя в virtual_alias_maps, т.е. в таблице postfixadmin'a.

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

Jul 09 22:02:08 auth-worker(default): Info: sql(root@domain.net): SELECT maildir, 65534 AS uid, 65534 AS gid FROM mailbox WHERE username = 'root@domain.net'
Jul 09 22:02:08 auth-worker(default): Info: sql(root@domain.net): Unknown user
Jul 09 22:02:08 auth(default): Info: master out: NOTFOUND       1
Понятно, что надо ему сказать, что для локальных пользователей лезть в эту таблицу не надо. Но я блин не пойму как. Читал документацию: по отдельности значение каждого параметра вроде бы понятно, но когда начинаешь возвращаться к решению задачи, осознать что нужно написать, чтоб работало именно так как мне надо не получается :(
Ещё я читал, что dovecot не может принимать почту в разные типы почтовых ящиков: т.е. либо mailbox, либо maildir.
Итого: как сконфигурить, чтобы почта приходила/уходила у всех пользователей?

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

Ну и конфиги традиционно:
main.cf

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

mailbox_size_limit = 102400000
message_size_limit = 10240000
queue_directory = /var/spool/postfix
command_directory = /usr/local/sbin
daemon_directory = /usr/local/libexec/postfix
data_directory = /var/db/postfix
mail_owner = postfix
default_privs = nobody
inet_interfaces = all

myhostname = mail.domain.net
mydomain = domain.net
myorigin = $mydomain
mydestination = localhost.$mydomain, localhost, $myhostname
mynetworks_style = host
mynetworks = 127.0.0.0/8
relay_domains = $mydestination $transport_maps
local_recipient_maps = $alias_maps
unknown_local_recipient_reject_code = 550

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
recipient_delimiter = +

mail_spool_directory = /var/mail
mailbox_command = /usr/local/libexec/dovecot/deliver
mailbox_transport = dovecot

smtpd_banner = $myhostname ESMTP $mail_name
local_destination_concurrency_limit = 2
debug_peer_level = 2

debugger_command =
         PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
         ddd $daemon_directory/$process_name $process_id & sleep 5

sendmail_path = /usr/local/sbin/sendmail
newaliases_path = /usr/local/bin/newaliases
mailq_path = /usr/local/bin/mailq
setgid_group = maildrop
html_directory = /usr/local/share/doc/postfix
manpage_directory = /usr/local/man
sample_directory = /usr/local/etc/postfix
readme_directory = /usr/local/share/doc/postfix

virtual_mailbox_base = /usr/mail/
virtual_alias_maps = mysql:/usr/local/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = mysql:/usr/local/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf
smtpd_sender_login_maps=mysql:/usr/local/etc/postfix/mysql_virtual_sender_login.cf
virtual_minimum_uid = 65534
virtual_uid_maps = static:65534
virtual_gid_maps = static:65534
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_path = private/auth
smtpd_sasl_type = dovecot
smtpd_sasl_authenticated_header=yes

smtpd_recipient_restrictions = permit_mynetworks reject_non_fqdn_recipient permit_sasl_authenticated reject_unauth_destination
smtpd_sender_restrictions= permit_mynetworks reject_non_fqdn_sender reject_unknown
dovecot.conf

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

base_dir = /var/run/dovecot/
protocols = imap pop3 #imaps pop3s managesieve
listen = *

disable_plaintext_auth = no

log_path = /var/log/dovecot.log
info_log_path = /var/log/dovecot_inf.log
log_timestamp = "%b %d %H:%M:%S "
ssl = no
mail_location = maildir:/usr/mail/%d/%n

mail_privileged_group = mail
mail_debug = yes
mail_log_prefix = "%Us(%u): "
mail_log_max_lines_per_sec = 10
dotlock_use_excl = yes
verbose_proctitle = yes
first_valid_gid = 65534
last_valid_gid = 65534
first_valid_uid = 65534
last_valid_uid = 65534

maildir_copy_with_hardlinks = yes

protocol imap {
#  login_greeting_capability = yes
  imap_client_workarounds = delay-newmail netscape-eoh tb-extra-mailbox-sep
}

protocol pop3 {
  pop3_uidl_format = %08Xu%08Xv
  pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
}

protocol lda {
  postmaster_address = admin@domain.net
  sendmail_path = /usr/sbin/sendmail
}

auth_username_format = %Lu
auth_verbose = yes
auth_debug = yes
auth_debug_passwords = yes
auth default {
  mechanisms = plain login cram-md5 digest-md5
  passdb sql {
    args = /usr/local/etc/dovecot-sql.conf
  }
  userdb sql {
    args = /usr/local/etc/dovecot-sql.conf
  }
  user = nobody
  socket listen {
    master {
      path = /var/run/dovecot/auth-master
      mode = 0666
    }
    client {
      path = /var/spool/postfix/private/auth
      mode = 0660
      user = postfix
      group = postfix
    }
  }
}

dict {
  #quota = mysql:/usr/local/etc/dovecot-dict-quota.conf
  #expire = db:/var/db/dovecot/expire.db
}

plugin {
  quota = maildir:User quota
  quota_rule = *:storage=20MB
  quota_rule2 = Trash:storage=20MB
  quota_rule3 = Spam:storage=10MB
  trash = /usr/local/etc/dovecot-trash.conf
  expire = Trash 7 Spam 30
}

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

moury
сержант
Сообщения: 249
Зарегистрирован: 2009-02-06 23:02:40
Откуда: Москва
Контактная информация:

Re: Postfix: не работает почта для локальных пользователей

Непрочитанное сообщение moury » 2010-07-10 18:00:40

Strycker писал(а): Понятно, что надо ему сказать, что для локальных пользователей лезть в эту таблицу не надо. Но я блин не пойму как.
А у Вас вообще нет локальных пользователей :smile:
Закомментируйте local_recipient_maps.
Strycker писал(а): Ещё я читал, что dovecot не может принимать почту в разные типы почтовых ящиков: т.е. либо mailbox, либо maildir.
В dovecot типы почтовых ящиков можно настраивать для каждого юзера и каждого shared mailbox'а отдельно. Просто подобная гетерогенность - ИМХО дурость несусветная. Например, осложнит бекап.

А еще у Вас

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

mailbox_command = /usr/local/libexec/dovecot/deliver
mailbox_transport = dovecot
Выберите что-нибудь одно.
Сисадмин - вождь апачей

Аватара пользователя
Strycker
рядовой
Сообщения: 20
Зарегистрирован: 2010-04-27 9:36:37

Re: Postfix: не работает почта для локальных пользователей

Непрочитанное сообщение Strycker » 2010-07-10 19:28:10

Спасибо за быстрый ответ, не ожидал что кто-то ответит на выходных.
Закомментировал что вы сказали, перезапустил postfix. Результат нулевой:

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

telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.domain.net ESMTP Postfix
ehlo
501 Syntax: EHLO hostname
mail from: logcheck
250 2.1.0 Ok
rcpt to: root
550 5.1.1 <root>: Recipient address rejected: User unknown in virtual mailbox table
Где грабли?

Гость
проходил мимо

Re: Postfix: не работает почта для локальных пользователей

Непрочитанное сообщение Гость » 2010-07-10 19:43:43

А зачем тебе и с виртуальных и с локальных, перебрось локальных пользователей в виртуальных и не морочь голову.

книга по Postfix:
Ральф Гильдебрандт, Патрик Кеттер Postfix подробное руководство 2008

Аватара пользователя
Strycker
рядовой
Сообщения: 20
Зарегистрирован: 2010-04-27 9:36:37

Re: Postfix: не работает почта для локальных пользователей

Непрочитанное сообщение Strycker » 2010-07-10 22:49:12

Не хочу мешать почту. Локальная должна быть доступна на серваке, там только служебная инфа, а для виртуальных пользователей доступ через круглокуб - это для других задач.

Книжку эту уже нашёл и скачал, теперь читаю ;) На неделе куплю в бумажном виде (не люблю читать с монитора).

moury
сержант
Сообщения: 249
Зарегистрирован: 2009-02-06 23:02:40
Откуда: Москва
Контактная информация:

Re: Postfix: не работает почта для локальных пользователей

Непрочитанное сообщение moury » 2010-07-11 0:14:53

Теперь постфикс увидел локальных пользователей, но dovecot на локальных пользователей не настроен. Добавьте нужные passdb и userdb.

Вполне может быть, что я что-то еще не вижу - болею, соображаю не очень. Приведите полностью логи сессии для постфикса и давкота, а не только ошибку.
Не хочу мешать почту. Локальная должна быть доступна на серваке, там только служебная инфа, а для виртуальных пользователей доступ через круглокуб - это для других задач.
Это - очень странное решение. Воспользовадись бы Вы лучше acl'ями.
Сисадмин - вождь апачей

Аватара пользователя
Strycker
рядовой
Сообщения: 20
Зарегистрирован: 2010-04-27 9:36:37

Re: Postfix: не работает почта для локальных пользователей

Непрочитанное сообщение Strycker » 2010-07-11 10:49:36

moury писал(а):Теперь постфикс увидел локальных пользователей, но dovecot на локальных пользователей не настроен. Добавьте нужные passdb и userdb.
Да, я сообразил что нужно указать базу пользователей. Сейчас у меня указан БД postfix'а. Как указать два источника пока не понял. Да и можно ли?
moury писал(а):Вполне может быть, что я что-то еще не вижу - болею, соображаю не очень. Приведите полностью логи сессии для постфикса и давкота, а не только ошибку.
Выздоравливайте, болеть летом - жутко обидно. У меня ДР летом, так вот как-то проболел недели 1.5 и как раз ДР прихватил...

maillog

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

Jul 11 11:02:07 domain postfix/pickup[82371]: 28D81B85B: uid=915 from=<logcheck>
Jul 11 11:02:07 domain postfix/pickup[82371]: 28D81B85B: uid=915 from=<logcheck>
Jul 11 11:02:07 domain postfix/cleanup[84242]: 28D81B85B: message-id=<20100711070207.28D81B85B@mail.domain.net>
Jul 11 11:02:07 domain postfix/cleanup[84242]: 28D81B85B: message-id=<20100711070207.28D81B85B@mail.domain.net>
Jul 11 11:02:07 domain postfix/qmgr[69924]: 28D81B85B: from=<logcheck@domain.net>, size=660, nrcpt=1 (queue active)
Jul 11 11:02:07 domain postfix/qmgr[69924]: 28D81B85B: from=<logcheck@domain.net>, size=660, nrcpt=1 (queue active)
Jul 11 11:02:08 domain postfix/pipe[84244]: 28D81B85B: to=<root@domain.net>, orig_to=<root>, relay=dovecot, delay=1.3, delays=0.13/0.02/0/1.2, dsn=5.1.1, status=bounced (user unknown)
Jul 11 11:02:08 domain postfix/pipe[84244]: 28D81B85B: to=<root@domain.net>, orig_to=<root>, relay=dovecot, delay=1.3, delays=0.13/0.02/0/1.2, dsn=5.1.1, status=bounced (user unknown)
Jul 11 11:02:08 domain postfix/cleanup[84242]: 69524B85D: message-id=<20100711070208.69524B85D@mail.domain.net>
Jul 11 11:02:08 domain postfix/cleanup[84242]: 69524B85D: message-id=<20100711070208.69524B85D@mail.domain.net>
Jul 11 11:02:08 domain postfix/bounce[84246]: 28D81B85B: sender non-delivery notification: 69524B85D
Jul 11 11:02:08 domain postfix/bounce[84246]: 28D81B85B: sender non-delivery notification: 69524B85D
Jul 11 11:02:08 domain postfix/qmgr[69924]: 69524B85D: from=<>, size=2447, nrcpt=1 (queue active)
Jul 11 11:02:08 domain postfix/qmgr[69924]: 69524B85D: from=<>, size=2447, nrcpt=1 (queue active)
Jul 11 11:02:08 domain postfix/qmgr[69924]: 28D81B85B: removed
Jul 11 11:02:08 domain postfix/qmgr[69924]: 28D81B85B: removed
Jul 11 11:02:08 domain postfix/pipe[84244]: 69524B85D: to=<logcheck@domain.net>, relay=dovecot, delay=0.14, delays=0.07/0/0/0.07, dsn=5.1.1, status=bounced (user unknown)
Jul 11 11:02:08 domain postfix/pipe[84244]: 69524B85D: to=<logcheck@domain.net>, relay=dovecot, delay=0.14, delays=0.07/0/0/0.07, dsn=5.1.1, status=bounced (user unknown)
Jul 11 11:02:08 domain postfix/qmgr[69924]: 69524B85D: removed
Jul 11 11:02:08 domain postfix/qmgr[69924]: 69524B85D: removed
dovecot_inf.log

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

Jul 11 11:02:07 auth(default): Info: master in: USER	1	root@domain.net	service=deliver
Jul 11 11:02:07 auth-worker(default): Info: sql(root@domain.net): SELECT maildir, 65534 AS uid, 65534 AS gid FROM mailbox WHERE username = 'root@domain.net'
Jul 11 11:02:07 auth-worker(default): Info: sql(root@domain.net): Unknown user
Jul 11 11:02:07 auth(default): Info: master out: NOTFOUND	1
Jul 11 11:02:08 auth(default): Info: master in: USER	1	logcheck@domain.net	service=deliver
Jul 11 11:02:08 auth-worker(default): Info: sql(logcheck@domain.net): SELECT maildir, 65534 AS uid, 65534 AS gid FROM mailbox WHERE username = 'logcheck@domain.net'
Jul 11 11:02:08 auth-worker(default): Info: sql(logcheck@domain.net): Unknown user
Jul 11 11:02:08 auth(default): Info: master out: NOTFOUND	1
moury писал(а):Это - очень странное решение. Воспользовались бы Вы лучше acl'ями.
Правильно ли я понял Вашу мысль: с помощью alias перенаправить получение почты локальных пользователей виртуальным пользователям. А с помощью ACL ограничить доступ к чтению этой почты?
Это всё просто привычка. Я привык что локальная почта доступна только на сервере в консоли, хотя читать её там, признаюсь, не очень удобно.

moury
сержант
Сообщения: 249
Зарегистрирован: 2009-02-06 23:02:40
Откуда: Москва
Контактная информация:

Re: Postfix: не работает почта для локальных пользователей

Непрочитанное сообщение moury » 2010-07-12 17:08:43

Вообще-то, Вам лучше заглянуть в дистрибутивные конфиги как MTA, так и dovecot'a. По умолчанию почтовая система рассчитана на обслуживание локальных пользователей с ящиками в формате mbox в /var/mail.

Примеры использования нескольких баз юзеров и паролей разных типов - в дистрибутивном конфиге dovecot'а. Однако базы юзеров лучше не смешивать - результат может быть интересным.
Сисадмин - вождь апачей

Аватара пользователя
Strycker
рядовой
Сообщения: 20
Зарегистрирован: 2010-04-27 9:36:37

Re: Postfix: не работает почта для локальных пользователей

Непрочитанное сообщение Strycker » 2010-07-20 22:05:45

Вообще-то, Вам лучше заглянуть в дистрибутивные конфиги как MTA
так и сделал: вернул master.cf и main.cf к исходной версии локальная почта стала нормально доставляться. Буду дальше разбираться, постараюсь понять в чём была проблема. Кстати, приобрёл обсуждаемую книжку (Гильдебрандта и Кеттера), действительно очень достойная литература: очень доступно и понятно, читается легко.

з.ы. оказывается у меня ещё и обратная зона не отрабатывает. Буду разбираться.
Всем спасибо за обсуждение.

Аватара пользователя
Strycker
рядовой
Сообщения: 20
Зарегистрирован: 2010-04-27 9:36:37

Re: Postfix: не работает почта для локальных пользователей

Непрочитанное сообщение Strycker » 2010-07-25 17:35:26

В продолжение, чтоб не начинать новую тему.

Можно ли организовать следующий алгоритм: есть локальные пользователи (перечислены в /etc/passwd). Хочу создать пользователя, которого не будет в /etc/passwd, но он будет принадлежать этому же домену (т.е. он не виртуальный) и почтовый ящик его будет не в /var/mail, а в другом месте. Пытаюсь понять, но пока не могу с помощью каких конструкций необходимо это объяснить Postfix? Ведь это не alias, так как перенаправления почты не требуется.
Как я себе это вижу: сделать карту в mysql, в которой хранить этих пользователей, для того чтоб в перспективе этим пользователям прикрутить RoundCube для доступа в почтовый ящик. Делается этого для того, чтоб они не имели доступ на сервер.

Подскажите в сторону каких инструкций надо смотреть, чтоб реализовать задуманное?

Аватара пользователя
Strycker
рядовой
Сообщения: 20
Зарегистрирован: 2010-04-27 9:36:37

Re: Postfix: не работает почта для локальных пользователей

Непрочитанное сообщение Strycker » 2010-07-25 19:15:05

Кажется понял: параметр local_recipient_maps указывает где искать локальных пользователей. По-умолчанию он равен

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

local_recipient_maps = proxy:unix:passwd.byname $alias_maps
alias_maps = hash:/etc/aliases
таким образом, если я поправлю этот параметр следующим образом:

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

local_recipient_maps = proxy:unix:passwd.byname $alias_maps mysql:/usr/local/etc/postfix/sql/local_users_map.sql
есть надежда, что демон local будет лезть в mysql для того чтоб найти пользователя и его почтовый ящик. Вот только содержимое local_users_map.sql пока не осилил. Буду пробовать.

Со стороны может показаться что я разговариваю сам с собой. :) Это не так, я собственно хотел услышать комментарии, верным ли путём иду?

moury
сержант
Сообщения: 249
Зарегистрирован: 2009-02-06 23:02:40
Откуда: Москва
Контактная информация:

Re: Postfix: не работает почта для локальных пользователей

Непрочитанное сообщение moury » 2010-07-25 23:04:29

Не тем. Чего Вам неймется? Что Вы вцепились в postfix, когда проблема - в dovecot?

Настройте dovecot и
Закомментируйте local_recipient_maps.
В идеале, переведите все домены в виртуальные и в формат maildir.
Сисадмин - вождь апачей

Аватара пользователя
Strycker
рядовой
Сообщения: 20
Зарегистрирован: 2010-04-27 9:36:37

Re: Postfix: не работает почта для локальных пользователей

Непрочитанное сообщение Strycker » 2010-07-25 23:13:02

Я откатился назад, сейчас работает только Постфикс. Довкот вообще не причём :)
На счёт виртуальных доменов, в документации написано, что не следует переводить домен с которого отправляется почта (domain.net в моём примере) в раздел виртуальных, иначе демон доставки почты для виртуальных пользователей virtual может некорректно работать.

В связи с этим, я и решил, что нужно локальных пользователей (те что из /etc/passwd) оставить где были - в /var/mail/, а для пользователей этого домена - (тех кого нет в /etc/passwd) сделать отдельную карту, доставлять почту в другие папки, на которые в перспективе натравить RoundCube.

з.ы. Я просто попытался решить проблему нахрапом, а сейчас понял, что слишком непростая это задача. Поэтому решил постигать постепенно. Сначала postfix и mysql, потом прикрутить dovecot, потом настроить sasl и tls, потом антивирусы и антиспам.

moury
сержант
Сообщения: 249
Зарегистрирован: 2009-02-06 23:02:40
Откуда: Москва
Контактная информация:

Re: Postfix: не работает почта для локальных пользователей

Непрочитанное сообщение moury » 2010-07-25 23:42:55

Strycker писал(а): На счёт виртуальных доменов, в документации написано, что не следует переводить домен с которого отправляется почта (domain.net в моём примере) в раздел виртуальных, иначе демон доставки почты для виртуальных пользователей virtual может некорректно работать.
В Вашем примере - не domain.net, а mail.domain.net. Вы же сами писали:
myhostname = mail.domain.net
Я готов помочь, но переписка в этом топике мне представляется нецелесообразной. Очень быстро он распухает. Если после решения проблемы Вы опубликуете здесь краткую сводку, пишите мне в личку.
Сисадмин - вождь апачей