Вопрос или проблема
Я столкнулся с проблемой не запуска службы saslauthd после обновления Ubuntu до 24.04 (она работает вместе с Virtualmin). Поэтому я не могу аутентифицироваться к smtp (не могу отправлять письма, но все еще могу получать) из-за ошибки:
454 4.7.0 Временная ошибка аутентификации: общая ошибка
Я пытался запустить службу saslauthd, но (systemctl status saslauthd
показывает сервис: неактивен (мертв)
):
systemctl start saslauthd
заканчивается тайм-аутом:
Работа для службы saslauthd не удалась, так как был превышен лимит времени.
Смотрите "systemctl status saslauthd.service" и "journalctl -xeu saslauthd.service" для получения дополнительных сведений.
Во время процесса запуска создаются некоторые файлы в /var/spool/postfix/var/run/saslauthd
, но после этого он заканчивается тайм-аутом – каталог снова пуст.
Мне удалось запустить saslauthd командой ниже:
/usr/sbin/saslauthd -a pam -c -m /var/spool/postfix/var/run/saslauthd -r -n 5
и авторизация начала работать
Также после создания символьной ссылки:
ln -s /var/spool/postfix/var/run/saslauthd /var/run
я могу запустить saslauthd с помощью systemctl start saslauthd
, и это работает.
- тестировалось с помощью команды ниже (также рабочий клиент на рабочем столе):
nc localhost 25
220 ################ ESMTP Postfix (Ubuntu)
AUTH LOGIN
334 VXNlcm5hbWU6
######
334 UGFzc3dvcmQ6
######
235 2.7.0 Аутентификация успешна
Окружение:
postfix 3.8.6
saslauthd 2.1.28
Ubuntu 24.04
Postfix 3.8.6 smtp конфигурация
/etc/postfix/master.cf:
smtp inet n - y - - smtpd -o smtpd_sasl_auth_enable=yes -o smtpd_tls_security_level=may
smtps inet n - y - - smtpd -o smtpd_sasl_auth_enable=yes -o smtpd_tls_security_level=may -o smtpd_tls_wrappermode=yes
saslauthd 2.1.28 конфигурация
/etc/default/saslauthd (уберите закомментированные строки)
START=yes
DESC="SASL Authentication Daemon"
NAME="saslauthd"
MECHANISMS="pam"
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"
THREADS=5
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"
PARAMS="-m /var/spool/postfix/var/run/saslauthd -r"
Я не могу поручиться за Virtualmin, так как не использую его, но что я заметил, так это то, что Ubuntu 24.04 использует правильный файл systemd для saslauthd в сравнении с 22.04, который использовал файл init, загружаемый через systemd.
Чтобы это работало с Postfix 3.8 в chroot на Ubuntu 24.04, вот что я сделал. Это может не совпадать с тем, что делает или ожидает Virtualmin, но это может помочь вам разобраться.
Создайте /etc/postfix/sasl/smtpd.conf
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
Запустите…
sudo mkdir -p /var/spool/postfix/var/run/saslauthd
sudo chmod 710 /var/spool/postfix/var/run/saslauthd
sudo chown :sasl /var/spool/postfix/var/run/saslauthd
adduser postfix sasl
Создайте /etc/default/saslauthd-postfix
NAME="saslauthd-postf"
MECHANISMS="pam"
MECH_OPTIONS=""
THREADS=5
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
Создайте /etc/systemd/system/saslauthd-postfix.service
[Unit]
Description=SASL Authentication Daemon for Postfix
Documentation=man:saslauthd(8)
[Service]
Type=forking
PIDFile=/var/spool/postfix/var/run/saslauthd/saslauthd.pid
EnvironmentFile=/etc/default/saslauthd-postfix
ExecStart=/usr/sbin/saslauthd -a $MECHANISMS $MECH_OPTIONS $OPTIONS -n $THREADS
RuntimeDirectory=saslauthd
[Install]
WantedBy=multi-user.target
Запустите…
sudo systemctl daemon-reload
sudo systemctl enable saslauthd-postfix.service
sudo systemctl start saslauthd-postfix.service
Очевидно, вам нужна соответствующая конфигурация postfix в main.cf или master.cf, поэтому это предполагается здесь – также предполагается, что необходимые пакеты установлены.
В моем случае нужно было просто изменить расположение файла pid.
Ошибка, которую я получал:
16 дек 22:47:29 out01 systemd[1]: Запуск saslauthd.service - Демон аутентификации SASL...
16 дек 22:47:29 out01 saslauthd[2916]: : master pid: 2916
16 дек 22:47:29 out01 systemd[1]: saslauthd.service: Не удается открыть файл PID /run/saslauthd/saslauthd.pid (еще?) после запуска: Нет такого файла или каталога
16 дек 22:47:29 out01 saslauthd[2916]: : слушает на сокете: /var/spool/postfix/var/run/saslauthd/mux
16 дек 22:48:59 out01 systemd[1]: saslauthd.service: операция запуска превысила лимит времени. Завершение.
16 дек 22:48:59 out01 systemd[1]: saslauthd.service: Не удалось запустить saslauthd.service - Демон аутентификации SASL.
16 дек 22:52:13 out01 systemd[1]: saslauthd.service: Служба имеет более одной настройки ExecStart=, что допускается только для служб типа oneshot. Отказано.
Решение:
отредактируйте saslauthd.service и установите правильный путь к файлу pid в окружении jailed postfix.
systemctl edit saslauthd.service
В моем случае это выглядит следующим образом:
### Редактирование /etc/systemd/system/saslauthd.service.d/override.conf
### Все, что между этим и комментарием ниже, станет содержимым файла исправлений
[Service]
PIDFile=/var/spool/postfix/var/run/saslauthd/saslauthd.pid
### Правки ниже этого комментария будут отброшены
### /usr/lib/systemd/system/saslauthd.service
# [Unit]
# Description=SASL Authentication Daemon
# Documentation=man:saslauthd(8)
#
# [Service]
# Type=forking
# PIDFile=/var/run/saslauthd/saslauthd.pid
# EnvironmentFile=/etc/default/saslauthd
# ExecStart=/usr/sbin/saslauthd -a $MECHANISMS $MECH_OPTIONS $OPTIONS -n $THREADS
# RuntimeDirectory=saslauthd
#
# [Install]
# WantedBy=multi-user.target
Ответ или решение
Проблема с запуском сервиса saslauthd после обновления до Ubuntu 24.04 может быть связана с несколькими факторами, включая изменения в конфигурации системы, учетные права и расположение PID-файлов. В данной статье мы подробно рассмотрим возможные причины и решения этой проблемы.
1. Общая информация о проблеме
После апгрейда на Ubuntu 24.04 сервис saslauthd перестал запускаться, что ведет к ошибкам аутентификации SMTP. При проверке статуса сервиса с помощью команды systemctl status saslauthd
видно, что он находится в состоянии inactive (dead)
. Попытка запуска сервиса через команду systemctl start saslauthd
завершается ошибкой таймаута.
2. Ошибки и диагностика
При запуске сервиса, в директории /var/spool/postfix/var/run/saslauthd
создаются файлы, но затем они исчезают, что указывает на проблемы с правами или неправильным местоположением необходимых файлов. Использование команды /usr/sbin/saslauthd -a pam -c -m /var/spool/postfix/var/run/saslauthd -r -n 5
позволяет вручную запустить сервис и обеспечить корректную работу аутентификации.
3. Устранение проблемы
3.1. Создание символьной ссылки
Одно из временных решений заключается в создании символьной ссылки:
ln -s /var/spool/postfix/var/run/saslauthd /var/run
Это позволяет выполнить запуск сервиса через systemctl
.
3.2. Обновление конфигурации
Необходимо убедиться, что конфигурация saslauthd правильно настроена. Откройте файл /etc/default/saslauthd
и убедитесь, что следующие параметры указаны верно:
START=yes
DESC="SASL Authentication Daemon"
NAME="saslauthd"
MECHANISMS="pam"
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"
THREADS=5
Также следует создать файл конфигурации для Postfix по пути /etc/postfix/sasl/smtpd.conf
и добавить в него:
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
3.3. Установка прав на директорию
Убедитесь, что у сервиса есть необходимые права на доступ к директории:
sudo mkdir -p /var/spool/postfix/var/run/saslauthd
sudo chmod 710 /var/spool/postfix/var/run/saslauthd
sudo chown :sasl /var/spool/postfix/var/run/saslauthd
adduser postfix sasl
3.4. Настройка systemd
Создайте модифицированный сервис для saslauthd, который корректно указывает на файл PID. Создайте файл по пути /etc/systemd/system/saslauthd-postfix.service
и добавьте следующее:
[Unit]
Description=SASL Authentication Daemon for Postfix
Documentation=man:saslauthd(8)
[Service]
Type=forking
PIDFile=/var/spool/postfix/var/run/saslauthd/saslauthd.pid
EnvironmentFile=/etc/default/saslauthd-postfix
ExecStart=/usr/sbin/saslauthd -a $MECHANISMS $MECH_OPTIONS $OPTIONS -n $THREADS
RuntimeDirectory=saslauthd
[Install]
WantedBy=multi-user.target
После изменения конфигураций выполните команды:
sudo systemctl daemon-reload
sudo systemctl enable saslauthd-postfix.service
sudo systemctl start saslauthd-postfix.service
4. Заключение
После выполнения всех шагов проверьте работоспособность аутентификации, выполнив команды для проверки состояния сервиса и тестирования SMTP. Если ваша настройка правильная, проблема с аутентификацией SMTP должна быть устранена.
В случае возникновения вопросов рекомендуется обращаться к документации по вашему программному обеспечению или в сообщество, чтобы найти специфические решения для вашей конфигурации.