Sendmail + dovecot, проблема с "виртуальными" пользователями

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
StreamThreader
рядовой
Сообщения: 27
Зарегистрирован: 2011-09-22 13:48:47
Откуда: Украина, Одесса
Контактная информация:

Sendmail + dovecot, проблема с "виртуальными" пользователями

Непрочитанное сообщение StreamThreader » 2012-10-17 12:44:06

Всем доброго времени суток!
Вот разбираюсь, читаю как сделать так что бы:
1) Sendmail работал как MTA
2) Почту доставлял в ящики виртуальным пользователям dovecot-lda он же индексирует maildir
3) Просмотр ящиков производился через IMAP (dovcot)
4) В роли MUA выступал в основном roundcube на том же хосте, но была возможность получать почту через всякие Thunderbird или TheBat!
Я вот даже мануал начал писать 2012-10-10-FreeBSD веб-почта.doc (он пока содержит мои ошибки)

У меня проблема.
На данный момент любая почта которая отправлена в мой домен приходит пользователю dovecot и всё. Я так понимаю, что письма приходят к этому пользователю, а затем сортируются по maildir-ам виртуальных пользователей, но так не происходит.
Читаю - http://wiki2.dovecot.org/LDA/Sendmail
Добавляю строки в файл relay.mailx.local.mc (мой домен для тестов mailx.local, машина где всё делаю relay.mailx.local)
в секцию ко всяким FEATURE

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

FEATURE(`local_procmail', `/usr/local/libexec/dovecot/dovecot-lda',`/usr/local/libexec/dovecot/dovecot-lda -d $u')
MODIFY_MAILER_FLAGS(`LOCAL', `-f')
В конце файл выглядит вот так

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

MAILER(procmail)dnl                                                                                                                                                                            
MAILER(local)dnl                                                                                                                                                                               
MAILER(smtp)dnl  
Я так понимаю что, dovecot-lda "маскируеться" под procmail, просто на некоторых форумах видел люди пишут в добавок строку MAILER(dovecot)dnl поэтому эта строка не нужна, тем более в оф. сайте нет таких строк.
Затем читаю дальше и вижу, что если sendmail запускается вот так: define(`confRUN_AS_USER', `sendmail')dnl
то необходимо комментировать некоторые строки и т. д.. У меня таких извращений похоже нет, значит пропускаю этот пункт.
Теперь говорят, что надо добавить в файл mailertable строку: mailx.local vmail:vmail
А потм не понятное предложение:
"The dovecot (or some other random text) after the colon character is required, else sendmail will fail to pass command arguments to dovecot-lda correctly. Make sure all
the virtual domains are in the virtuserdomains file. "
На сколько я понял тут говорят, что dovecot или какой-то любой текст может быть после двоеточия (только не понятно какого именно) иначе сендмейл не правильно передаст аргументы dovecot-lda программе. И убедитесь что все виртуальные домены перечислены в файле virtuserdomains
Я можно сказать впервые работаю с sendmail и на сколько я понял файл virtuserdomains служит для того, что бы сопоставлять пользователей одного домена с другим для перессылки писем.
Я указал в этом файле так: @mailx.local dovecot
Домен у меня один, и я так понял, что вся почта должна приходить существующему пользователю dovecot, а затем сортироваться программой dovecot-lda по виртуальным пользователям.
После редактирования делаю make && amke install && make restart
Сами виртуальные пользователи сделаны в довекоте так:

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

passdb {
    driver = passwd-file
    args = /usr/local/etc/dovecot/passwd
}

userdb {
    driver = static
    args = uid=vmail gid=vmail home=/home/vmail/%u
}
фалй аля passwd содержит виртуальных пользователей:

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

root:{PLAIN}1
postmaster:{PLAIN}1
dovecot:{PLAIN}1
www:{PLAIN}1
abuse:{PLAIN}1
hostmaster:{PLAIN}1
admin:{PLAIN}1
admin4ik:{PLAIN}1
Подскажите, кто знает, что я не так делаю.
Мануалы по довекоту читаю, но там явно чего-то не досказано.
Спасибо за помощь!

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

ASY
мл. сержант
Сообщения: 130
Зарегистрирован: 2011-02-21 12:50:03

Re: Sendmail + dovecot, проблема с "виртуальными" пользовате

Непрочитанное сообщение ASY » 2012-10-19 23:48:30

Я можно сказать впервые работаю с sendmail и на сколько я понял файл virtuserdomains служит для того, что бы сопоставлять пользователей одного домена с другим для перессылки писем.
Нет. Именно для перечисления виртуальных доменов. То есть, там должен быть только mailx.local. А вот про Dovecot и про нюансы настройки нужного MAILER не расскажу. Кстати, есть идея, как Sendmail должен проверить наличие пользователя и наличие квоты, если есть, до приёма сообщения ?

Аватара пользователя
StreamThreader
рядовой
Сообщения: 27
Зарегистрирован: 2011-09-22 13:48:47
Откуда: Украина, Одесса
Контактная информация:

Re: Sendmail + dovecot, проблема с "виртуальными" пользовате

Непрочитанное сообщение StreamThreader » 2012-10-20 22:30:20

Так, для начала сделал так, что-бы пока работало с системными пользователями но с паролями отличными от системных.
https://docs.google.com/open?id=0B_9mRG ... m43b0R2V1k

ASY
мл. сержант
Сообщения: 130
Зарегистрирован: 2011-02-21 12:50:03

Re: Sendmail + dovecot, проблема с "виртуальными" пользовате

Непрочитанное сообщение ASY » 2012-10-20 22:49:30

StreamThreader писал(а):Так, для начала сделал так, что-бы пока работало с системными пользователями но с паролями отличными от системных.
А смысл ? Если отдельную базу пользователей вести, так пусть она и будет отдельной. В общем, на мой взгляд, идеологически верный вариант - это когда есть система хранения почты и доступа к ней, и есть MTA, который у этой системы консультируется по всем вопросам локальной доставки. Вот это и надо стремиться построить. Скажем, в случае использования Cyrus-IMAP, sndmail-у вообще не надо знать ничего о пользователях. Если пользователь опознаётся, как пользователь обслуживаемого домена, через механизм socket map делается запрос к сервису cyrus smmapd, и, на основании ответа, письмо принимается, или нет. После приёма оно просто сливается в Cyrus по lmtp. Что-то похожее надо путаться сделать и с Dovecot, как мне думается.

Аватара пользователя
mr. brightside
сержант
Сообщения: 260
Зарегистрирован: 2010-04-17 17:32:39
Откуда: Saint-Petersburg

Re: Sendmail + dovecot, проблема с "виртуальными" пользовате

Непрочитанное сообщение mr. brightside » 2012-10-22 10:17:26

Где хранятся виртуальные юзеры?

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

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

Итак, где хранятся виртуальные пользователи?

Vmail - это юзер для доступа к почтовым каталогам. У Давкота еще есть юзер для проверки успешной авторизации и пользователь под которым запускается процесс логина. Это три различных пользователя.

Для стандартных нужд сендмыл должен работать от рута.

А локальный доставщик можно определить так:

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

define(`PROCMAIL_MAILER_PATH',`/usr/local/libexec/dovecot/deliver')dnl
FEATURE(`local_procmail', `/usr/local/libexec/dovecot/deliver', `deliver -d $u')dnl
....
MAILER(procmail)
MAILER(smtp)
Однако, надо все же понять, где хранятся виртуальные пользователи?
Для хранения в мускуле сендмыл надо патчить. Для хранения в ЛДАП - его надо пересобирать из сырцов. С остальным не заморачивался =)
Только FreeBSD, только хардкор

Аватара пользователя
StreamThreader
рядовой
Сообщения: 27
Зарегистрирован: 2011-09-22 13:48:47
Откуда: Украина, Одесса
Контактная информация:

Re: Sendmail + dovecot, проблема с "виртуальными" пользовате

Непрочитанное сообщение StreamThreader » 2012-10-24 16:46:13

Виртуальные пользователи лежали в файле и читались драйвером passwd-file.
Но получается, что этот файл умеет читать только Dovecot, а SendMail всегда смотрит в /etc/shadow.

Аватара пользователя
mr. brightside
сержант
Сообщения: 260
Зарегистрирован: 2010-04-17 17:32:39
Откуда: Saint-Petersburg

Re: Sendmail + dovecot, проблема с "виртуальными" пользовате

Непрочитанное сообщение mr. brightside » 2012-10-24 19:02:39

StreamThreader писал(а):Виртуальные пользователи лежали в файле и читались драйвером passwd-file.
Но получается, что этот файл умеет читать только Dovecot, а SendMail всегда смотрит в /etc/shadow.
Довекоту надо сказать, что вся почта принадлежит одному пользователю, через этого же пользователя юзеры будут получать почту, верифицируя себе через файлик, где хранятся пароли.

Сендмыл должен знать, принимать письмо или нет на основе проверки существует ли пользователь в системе. По дефолту он смотрит на системных пользователей.

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

Можете еще показать свой dovecot.conf?
Только FreeBSD, только хардкор

ASY
мл. сержант
Сообщения: 130
Зарегистрирован: 2011-02-21 12:50:03

Re: Sendmail + dovecot, проблема с "виртуальными" пользовате

Непрочитанное сообщение ASY » 2012-10-25 20:35:15

Не, с Cyrus-IMAP + Sendmail ситуация получается значительно элегантнее...

Аватара пользователя
mr. brightside
сержант
Сообщения: 260
Зарегистрирован: 2010-04-17 17:32:39
Откуда: Saint-Petersburg

Re: Sendmail + dovecot, проблема с "виртуальными" пользовате

Непрочитанное сообщение mr. brightside » 2012-10-26 9:21:52

ASY писал(а):Не, с Cyrus-IMAP + Sendmail ситуация получается значительно элегантнее...
Кстати, не использовал такую связку

А чем элегантнее?
Только FreeBSD, только хардкор

ASY
мл. сержант
Сообщения: 130
Зарегистрирован: 2011-02-21 12:50:03

Re: Sendmail + dovecot, проблема с "виртуальными" пользовате

Непрочитанное сообщение ASY » 2012-10-26 14:21:58

Тем, что вся настройка для пользователей делается в Cyrus-IMAP. Это основа, отвечающая за всё. Пользователей можно завести в sasldb, в mysql (через sasl-mysql), можно в LDAP.... Можно несколько доменов. Как только всё это заведено и настроено, берётся Sendmail, читается тут: http://anfi.homeunix.org/sendmail/. Я использую RTCyrus2, RTCyrus3 посмотреть руки не доходят который год (кстати, там есть аналогично для Exim). У Cyrus-IMAP, дополнительно к pop/imap, активируется сервис smmapd. После добавления нужных майлеров в дерево шаблонов Sendmail в mc дописывается что-то вроде

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

FEATURE(`mrs')dnl
FEATURE(`mrs_cyrus',`/var/lib/imap/socket/smmapd')dnl
dnl
define(`SMTP_MAILER_FLAGS', `A')dnl
MAILER(smtp)dnl
dnl
MAILER(local)dnl
dnl
define(`CYRUSV2_MAILER_ARGS',`FILE /var/lib/imap/socket/lmtp')dnl
MODIFY_MAILER_FLAGS(`CYRUSV2',`-A5')dnl
MAILER(cyrusv2)dnl
После этого, в mailertable пишется что-то вроде
my.dom mrs_cyrus_mailertable:error:5.1.1:550 User unknown or mailbox full

в access:
to:my.dom RELAY

И всё. Sendmail начинает приём письма. Если обнаруживается, что это домен, описанный в mailertable, и это my.dom, то через socket map делается запрос к сервису smmapd. Сервис отвечает о достижимости ящика и sendmail принимает или нет сообщение дальше. Никакой информации о пользователях, квотах и т.п. Sendmail-у знать не надо, достаточно списка доменов. Если нужна авторизация, то берётся saslauthd и назначается механизм проверки rimap. И, опять, всё завязано на тот же Cyrus.

Аватара пользователя
mr. brightside
сержант
Сообщения: 260
Зарегистрирован: 2010-04-17 17:32:39
Откуда: Saint-Petersburg

Re: Sendmail + dovecot, проблема с "виртуальными" пользовате

Непрочитанное сообщение mr. brightside » 2012-10-26 14:33:17

ASY писал(а): И всё. Sendmail начинает приём письма. Если обнаруживается, что это домен, описанный в mailertable, и это my.dom, то через socket map делается запрос к сервису smmapd. Сервис отвечает о достижимости ящика и sendmail принимает или нет сообщение дальше. Никакой информации о пользователях, квотах и т.п. Sendmail-у знать не надо, достаточно списка доменов. Если нужна авторизация, то берётся saslauthd и назначается механизм проверки rimap. И, опять, всё завязано на тот же Cyrus.
Я обязательно попробую =)

тем более, что помимо постфикса юзаю сендмыл.

Только я его с давкотом юзаю, как и постфикс.
Только FreeBSD, только хардкор

medved
рядовой
Сообщения: 10
Зарегистрирован: 2012-05-17 12:19:37

Re: Sendmail + dovecot, проблема с "виртуальными" пользовате

Непрочитанное сообщение medved » 2014-07-09 13:06:13

День добрый, подскажите ге можно взять ман по настройке Sendmail + dovecot, если такой есть?

Аватара пользователя
mr. brightside
сержант
Сообщения: 260
Зарегистрирован: 2010-04-17 17:32:39
Откуда: Saint-Petersburg

Re: Sendmail + dovecot, проблема с "виртуальными" пользовате

Непрочитанное сообщение mr. brightside » 2014-07-09 19:34:24

medved писал(а):День добрый, подскажите ге можно взять ман по настройке Sendmail + dovecot, если такой есть?
Добрый день,

Я давно отошел от сендмыла и администрирования в частности, но я помню, что на оф. сайте dovecot была информация.

Также вам может помочь следующий линк
Только FreeBSD, только хардкор

medved
рядовой
Сообщения: 10
Зарегистрирован: 2012-05-17 12:19:37

Re: Sendmail + dovecot, проблема с "виртуальными" пользовате

Непрочитанное сообщение medved » 2014-07-10 8:59:02

mr. brightside писал(а):
medved писал(а):День добрый, подскажите ге можно взять ман по настройке Sendmail + dovecot, если такой есть?
Добрый день,

Я давно отошел от сендмыла и администрирования в частности, но я помню, что на оф. сайте dovecot была информация.

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