LINUX.ORG.RU
решено ФорумAdmin

Помогите с Postfix и Dovecot

 ,


0

2

Всем доброй пятницы. Помогите подружить Dovecot и Postfix. Цель такова: Postfix получает почту и складывает ее в /var/mail/spool/$user, а Dovecot собственно предоставляет доступ к ящику и всем письмам при подключении к нему. Dovecot удалось настроить так, чтобы письма лежали в

/var/spoll/mail/%u

А вот Postfix капризничает и не понимает %u от чего валит почту в директорию %u. Как его научить?

P.S. пробовал и %u и $u

★★★

Последнее исправление: cetjs2 (всего исправлений: 1)

Ну так давайте там конфиги и логи, а то ваш пост воспринимается как «сделайте все за меня» :)

dbzer0
()
Ответ на: комментарий от Hoodoo

Всем спасибо, посидел немного сам и оно получилось. Правда пока не почитав сам не понял как, но mail_transport = dovecot исправило ситуацию. Теперь почта падает в /var/spool/mail/user. Почитаю еще манов чтобы еще и понять как оно получилось.

partyzan ★★★
() автор топика
Ответ на: комментарий от blind_oracle

Так я знаю, что MTA не сам доставляет до ящика, просто не хотелось плодить 100500 и перекладывать почту из одного места в другое при получении ее пользователем.

Еще по архитектуре вопрос есть. Хочется организовать виртуальных пользователей инфа о которых лежит в MySQL. Можно ли создать одну единую БД для Postfix, Dovecot и Roundcube чтобы posfix проверял наличие «ящика» при приеме письма через эту базу и чтобы Dovecot к которому подключается Roundcube тоже использовал эти же учетные данные? Как реализовать? А то сейчас думаю, что как минимум 2 БД нужно для этой связки.

partyzan ★★★
() автор топика
Ответ на: комментарий от partyzan

Обычно, МТА (а точнее встроенный в него MDA) как раз доставляет, но в данном случае ты просто имеешь меньше геморроя с одновременной настройкой и постфикса и довкота для работы с пользователями. Постфикс просто проверяет есть ли юзер, и уже передает письмо для дальнейшей раскладки в папку, обработки sieve скриптов, квот и т.п.

По поводу вопроса - так обычно то все и делают. Никаких двух БД не надо, в инете вагон хау-ту по как раз такой настройке. Советую начать с postfixadmin, это веб-морда для управления пользователями. Установи ее, она создаст нужную структуру таблиц для хранения юзеров и останется лишь настроить довкот и постфикс для проверки наличия юзеров и их паролей по этой БД, там всё достаточно просто.

blind_oracle ★★★★★
()
Последнее исправление: blind_oracle (всего исправлений: 1)

Postfix получает почту и складывает ее в …

Не совсем правильный подход. У dovecot есть deliver, который собственно кладёт почту куда надо. Иначе, если самому раскладывать почту по каталогам, dovecot'у приходится каждый раз индексировать её заново.

к примеру:

main.cf

virtual_transport = dovecot
dovecot_destination_recipient_limit = 1

master.cf

dovecot unix    -       n       n       -       -       pipe
  flags=DRhu user=vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}

А вот что конкретно где лежит знает уже сам dovecot.

beastie ★★★★★
()
Ответ на: комментарий от beastie

Не получается до конца реализовать работу postfix, dovecot через Mysql. Postfix видит пользователя который есть в базе. Когда пользователь есть в базе, то postfix принимает письмо, но потом после его приема пишет в логи

 status=bounced (unknown user: "555")

Выходит, что c Mysql он нормально общается, но почему тогда он сначала видит пользователя и принимает пипсьмо, а потом говорит unknown user? Dovecot ящик пользователя соответственно не создает и сыпет Undelivered message в ящик (который создается) админа почты (postfixadmin)

Помоги решить вопрос, в чем может быть дело? $mydestination вроде тоже может быть замешан, но я хз что там еще нужно добавить

partyzan ★★★
() автор топика
Ответ на: комментарий от beastie
dovecot-sql.conf.ext


driver = mysql
connect = host=127.0.0.1 dbname=mail user=dmn password=passwod
default_pass_scheme = PLAIN-MD5
password_query = SELECT username as user, password FROM mailbox WHERE username = '%u'

То что закоменчено не стал писать

# Authentication for SQL users. Included from auth.conf.

auth-sql.conf.ext

#
# <doc/wiki/AuthDatabase.SQL.txt>

passdb {
  driver = sql

  # Path for SQL configuration file, see example-config/dovecot-sql.conf.ext
  args = /etc/dovecot/dovecot-sql.conf.ext
}

# "prefetch" user database means that the passdb already provided the
# needed information and there's no need to do a separate userdb lookup.
# <doc/wiki/UserDatabase.Prefetch.txt>
#userdb {
#  driver = prefetch
#}

userdb {
  driver = sql
  args = /etc/dovecot/dovecot-sql.conf.ext
}

# If you don't have any user-specific settings, you can avoid the user_query
# by using userdb static instead of userdb sql, for example:
# <doc/wiki/UserDatabase.Static.txt>
#userdb {
  #driver = static
  #args = uid=vmail gid=vmail home=/var/vmail/%u
#}

password естесственно менял на реальный пароль к БД

partyzan ★★★
() автор топика
Последнее исправление: partyzan (всего исправлений: 4)
Ответ на: комментарий от partyzan

кажись не хватает ещё user_query. как пример (dovecot-sql.conf.ext):

user_query = SELECT home, uid, gid FROM mailbox WHERE username = '%u'

(поля дб посолить и поправить по вкусу: т.е. maildir AS home и т.д.)

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 1)
Ответ на: комментарий от beastie

но это всё гадание на кофейной гуще. повключай все *_debug в 10-logging.conf — яснее будет.

beastie ★★★★★
()
Ответ на: комментарий от partyzan

Можно ли создать одну единую БД для Postfix, Dovecot и Roundcube

да. аутентификация RC через IMAP, аутентификация Postfix через sasl сервис dovecot. удобная настройка виртуальных доменов и юзерей через postfixadmin. вся требуха в mysql.

beastie ★★★★★
()
Ответ на: комментарий от beastie

Вобщем включив дебаг обнаружил, что создается еще какой то запрос которого нет в том который я писал в конфиге. А именно.

SELECT home, uid, gid FROM users WHERE username = '111' AND domain = 'domain.ru'

Откуда он это берет? Тем более, что таблицы users нет, есть только mailbox.

partyzan ★★★
() автор топика
Ответ на: комментарий от partyzan

это дефаулт для `user_query`. смотри мой пост выше. его можно и отключить, если выставить driver = static дря userdb:

userdb {
  driver = static
  args = uid=vmail gid=vmail home=/home/%u
}
beastie ★★★★★
()
Ответ на: комментарий от beastie

Все уже разобрался, спасибо большое. Дело было в неправильном запросе SQL. Вернее он был не полный. И к тому же в конфиге была загвоздка. Даже если все строки закомменчены, то запрос формировался из этих дефолтных строк. Подправил и теперь авторизация виртуальных юзеров работает, но теперь довекот перестал ложить письма куда надо. Через roundcube ящики создаются, но новые письма туда не падают.

Покопаю еще логи, думаю, что та директория куда ложить письма тоже передается через тот же sql запрос

partyzan ★★★
() автор топика
Ответ на: комментарий от partyzan

Всем спасибо, проблему решил полностью и проблема с доставкой почты решилась путем правки mydestination.

partyzan ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.