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

виртуальные пользователи Postfix + Cyrus Sasl

 , ,


1

1

Имееся CentOS 7 без selinux. В качестве MTA установлен Postfix, MDA Cyrus-imapd. Установка и настройка в принципе прошла без особых проблем, почта получалась, отправлялась, но не устраивал тот факт, что аутентификация шла через PAM т.е. каждый новый пользователь должен быть добавлен в систему. Решил перейти на использование sasldb и тут возник затык.

# Заводим виртуального пользователя
saslpasswd2 -c postmaster
Password: *******
Again (for verification): *******

# Ящик создан
cyradm -u postadmin localhost
Password:*******
localhost> lm
user.postmaster (\HasChildren)

Почтовый клиент соединение устанавливает,

17:25:36.494 Imap::Mailbox::OpenConnectionTask OpenConnectionTask:  Activated
17:25:36.517 *** Looking up localhost...
17:25:36.517 conn Resolving hostname...
17:25:36.521 *** Connecting to localnet:143...
17:25:36.521 conn Connecting to the IMAP server...
17:25:36.612 *** Connection established
17:25:36.612 *** Connected
17:25:36.612 conn Checking capabilities...
17:25:36.858 <<< * OK [CAPABILITY IMAP4rev1 LITERAL+ ID ENABLE STARTTLS AUTH=PLAIN AUTH=LOGIN SASL-IR] mx.localhost Cyrus IMAP v2.4.17-Fedora-RPM-2.4.17-8.el7_1 server ready␍␊
17:25:36.859 conn Logging in...
17:25:36.861 >>> [LOGIN command goes here]
17:25:36.951 <<< y0 OK [CAPABILITY IMAP4rev1 LITERAL+ ID ENABLE ACL RIGHTS=kxte QUOTA MAILBOX-REFERRALS NAMESPACE UIDPLUS NO_ATOMIC_RENAME UNSELECT CHILDREN MULTIAPPEND BINARY CATENATE CONDSTORE ESEARCH SORT SORT=MODS
(+ 241 more bytes)
17:25:36.952 conn Activating compression...
17:25:36.959 >>> y1 COMPRESS DEFLATE␍␊
17:25:37.048 <<< y1 OK DEFLATE active␍␊
17:25:37.049 conn Logged in.
...

Но при этом почта отправленная на этот адрес получает отлуп 550 User unknown. Я так понимаю это ответ postfix т.к. локального пользователя postmaster не существует, дак вот как его заставить искать пользователей в sasldb?

Ответ на: комментарий от anc

с гуглом уже советовался ) по поводу ссылки, там речь идет об аутентификации пользователей при обращении к серверу по smtp. Это уже делал, да виртуальный пользователь проходит аутентификацию и он может отправить письмо, но при этом почта до него все равно не ходит 550 user unknown

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

Ну тогда простите, что нашел по первой ссылке то и кинул :). Ждите знатоков postfix.

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

Спасибо, собственно по этой ссылке почти готовое решение

в postfix main.cf
# "виртуализируем" наш почтовый домен
virtual_mailbox_domains = mail.localhost

# прописываем виртуальных пользователей в файл затем создаем индексированную версию этого файла (по средством postmap) указываем в параметре  
virtual_mailbox_maps = hash:path_to_virtual_users_file

# передаем почту cyrus_imapd.
virtual_transport = lmtp:unix:/var/lib/imap/socket/lmtp

# Еще один момент, который потратил мое время - закоментить строку для того, чтобы началась обработка виртуальных пользователей
$mydestination = $myhostname, localhost ...

Почта пошла

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

# прописываем виртуальных пользователей в файл затем создаем
индексированную версию этого файла (по средством postmap)
указываем в параметре
virtual_mailbox_maps = hash:path_to_virtual_users_file

Не очень удобно, что в двух местах. С использованием Sendmail достаточно заводить только в Cyrus-IMAP. Плюс, сразу, работает квота.

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

Не очень удобно, что в двух местах

Ну да, хотя не большой скрипт поможет это решить. А на счет квот они же устанавливаются в Cyrus-imap при создании ящика?

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

А на счет квот они же устанавливаются в Cyrus-imap

Да.
Я честно говоря тоже не очень насчет квоты распарсил AS поясните?

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

Я честно говоря тоже не очень насчет квоты распарсил AS поясните?

Я, видимо, несколько неточно выразился. Тут момент такой. Если MTA ничего не знает о квотах, то он принимает сообщение, затем пытается передать его в Cyrus-IMAP по lmtp. В случае, если квота есть и исчерпана, MTA должен сформировать боунс. А, в современной реальности, формировать боунс лучше заставлять сервер отправителя. В описанном конфиге я не заметил настройки способа такой проверки у Postfix, хотя, вероятно, он и существует.

Что касается Sendmail, у Cyrus-IMAP есть демон smmapd, кторым Sendmail может пользоваться для проверки доступности ящика у Cyrus-IMAP сразу после rcpt to, что решает сразу две этих проблемы, и со списком пользователей, и с квотой. Единственное, Sendmail парсит ответ smmapd не полностью и не может передать точную причину отказа в приёме на сторону отправителя. В принципе, в contrib у Sendmail лежит пример клиента smmapd на Perl, если к Postfix как-то можно прицепить внешний скрипт для проверки, можно этим воспользоваться наверное.

AS ★★★★★ ()
Последнее исправление: AS (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.