Postfix – это MTA (mail transfer agent), и его можно использовать при построении всевозможных почтовых систем. Он, разумеется, заслуживает нескольких хороших статей, однако сейчас я расскажу о конкретной ошибке, встретившейся мне. Постоянно получаю в логах своего почтового сервера следующие варнинги:
warning: when SASL type is "dovecot", SASL path "dovecot-auth" should be a socket pathname
Надоели эти варнинги, и я решил их убрать.
Вот содержимое моего файла main.cf:
smtpd_sasl_type = dovecot
smtpd_sasl_path = dovecot-auth
Окей, меняю smtpd_sasl_path на путь к unix-сокету, как и говорится в сообщении:
smtpd_sasl_path = /var/spool/postfix/dovecot-auth
Однако теперь Postfix ругается по-другому:
Aug 25 10:10:57 mail postfix/smtpd[3085]: warning: SASL: Connect to /var/spool/postfix/dovecot-auth failed: No such file or directory Aug 25 10:10:57 mail postfix/smtpd[3085]: fatal: no SASL authentication mechanisms Aug 25 10:10:58 mail postfix/master[2370]: warning: process /usr/lib/postfix/smtpd pid 3085 exit status 1 Aug 25 10:10:58 mail postfix/master[2370]: warning: /usr/lib/postfix/smtpd: bad command startup -- throttling
Решение оказывается довольно неожиданным. Нужно поместить unix-сокет в подкаталог private. Сначала меняем место создания unix-сокета в файле dovecot.conf:
client { # path = /var/spool/postfix/dovecot-auth path = /var/spool/postfix/private/dovecot-auth mode = 0666 user = postfix group = postfix
А затем меняем настройку в файле Postfix’а:
#smtpd_sasl_path = dovecot-auth smtpd_sasl_path = private/dovecot-auth
Перезапускаем сначала dovecot, затем postfix:
# /etc/init.d/dovecot restart # /etc/init.d/postfix restart
Вот и все! Ошибки перестанут нас докучать. А старый сокет можно удалить:
# rm /var/spool/postfix/dovecot-auth