Служба saslauthd не запускается после обновления до Ubuntu 24.04

Вопрос или проблема

Я столкнулся с проблемой не запуска службы 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 должна быть устранена.

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

Оцените материал
Добавить комментарий

Капча загружается...