Postfix не запускается с помощью systemctl, но с помощью “postfix start” запускается.

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

Ubuntu 24.04.1 LTS, “postfix start” и “postfix stop” работают отлично.

systemctl start postfix
(нет ответа)

/var/log/syslog

2024-12-13T21:49:14.744589+01:00 aaa systemd[1]: Запуск [email protected] - Агент почтовой передачи Postfix (инстанс -)...
2024-12-13T21:49:15.002726+01:00 aaa systemd[1]: [email protected]: Управляющий процесс завершился, код=выход, статус=1/НЕУСПЕХ
2024-12-13T21:49:15.003169+01:00 aaa systemd[1]: [email protected]: Завершился с результатом 'код-выход'.
2024-12-13T21:49:15.004922+01:00 aaa systemd[1]: Не удалось запустить [email protected] - Агент почтовой передачи Postfix (инстанс -).

journalctl -xeu [email protected]

Это похоже на спам.

systemctl status postfix.service

systemctl status postfix.service
postfix.service - Агент почтовой передачи Postfix
     Загружено: загружено (/usr/lib/systemd/system/postfix.service; включено; предустановка: включено)
     Активно: активно (вышел) с Пт 2024-12-13 20:51:32 CET; 1ч 1мин назад
       Документы: man:postfix(1)
    Процесс: 960 ExecStart=/bin/true (код=вышел, статус=0/УСПЕХ)
   Основной PID: 960 (код=вышел, статус=0/УСПЕХ)
        CPU: 7мс

Dec 13 20:51:31 aaa systemd[1]: Запуск postfix.service - Агент почтовой передачи Postfix...
Dec 13 20:51:32 aaa systemd[1]: Завершён postfix.service - Агент почтовой передачи Postfix.

systemctl status [email protected]

[email protected] - Агент почтовой передачи Postfix (инстанс -)
     Загружено: загружено (/usr/lib/systemd/system/[email protected]; включено-во-время; предустановка: включено)
     Активно: неудачно (Результат: код-выход) с Пт 2024-12-13 21:49:15 CET; 4мин 48с назад
       Документы: man:postfix(1)
    Процесс: 2191 ExecStartPre=/usr/lib/postfix/configure-instance.sh - (код=вышел, статус=1/НЕУСПЕХ)
        CPU: 246мс

Dec 13 21:49:14 aaa systemd[1]: Запуск [email protected] - Агент почтовой передачи Postfix (инстанс -)...
Dec 13 21:49:15 aaa systemd[1]: [email protected]: Управляющий процесс завершился, код=вышел, статус=1/НЕУСПЕХ
Dec 13 21:49:15 aaa systemd[1]: [email protected]: Не удалось с результатом 'код-выход'.
Dec 13 21:49:15 aaa systemd[1]: Не удалось запустить [email protected] - Агент почтовой передачи Postfix (инстанс -).

postfix check
(нет ответа) = конфигурация в порядке

Пробовал все без файлов

/var/lib/postfix/master.lock
/var/spool/postfix/pid/master.pid

Я также пробовал
inet_interfaces = ipv4
и
#inet_interfaces = ipv4
Ничего не меняется.

Помогите, спасибо

Я нашел решение!

systemctl start postfix
выполняет
/usr/lib/postfix/configure-instance.sh
и скрипт возвращал 1 (ошибка), потому что был неправильный
/etc/ssl/certs/ssl-cert-snakeoil.pem.
Я получил его из
/var/spool/postfix/etc/ssl/certs/ssl-cert-snakeoil.pem
и теперь всё работает

Ответ или решение

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

Анализ проблемы

При попытке запустить Postfix через systemctl, в логах /var/log/syslog и при выполнении команды journalctl регистрируются ошибки, указывающие на сбой в исполняемом процессе:

systemd[1]: Starting postfix.service - Postfix Mail Transport Agent...
systemd[1]: <service-name>: Control process exited, code=exited, status=1/FAILURE
systemd[1]: <service-name>: Failed with result 'exit-code'.

Из вывода команды systemctl status postfix.service видно, что:

  • Postfix активно (active (exited)), но не запущен должным образом.
  • Исполняемый процесс /bin/true завершился успешно, что указывает на то, что сервис был запущен, но фактически ничего не делает.

Затем, при проверке статуса экземпляра службы Postfix с помощью systemctl status [email protected], мы видим, что контрольный процесс, связанный с запуском, также завершился с ошибкой:

systemd[1]: <service-name>: Control process exited, code=exited, status=1/FAILURE

Причина проблемы

Как вы уже правильно выявили, проблема заключалась в скрипте /usr/lib/postfix/configure-instance.sh, который возвращал ошибку, связанной с неправильным сертификатом SSL (в данном случае ssl-cert-snakeoil.pem). Этот сертификат, как было установлено, находился в каталоге /etc/ssl/certs/, но, по всей видимости, использовался неверный путь к сертификату.

Скопировав правильный сертификат из /var/spool/postfix/etc/ssl/certs/ssl-cert-snakeoil.pem в стандартный каталог /etc/ssl/certs/, вы смогли решить проблему и запустить Postfix с помощью systemctl.

Рекомендации по предотвращению подобных проблем

  1. Проверка конфигурации: Убедитесь, что все конфигурации, касающиеся SSL, указаны правильно и актуальны. Это поможет избежать ошибок с сертификатами.

  2. Использование логов: Регулярно проверяйте системные журналы (syslog, journalctl) для раннего выявления проблемы, что позволит быстрее ее устранить.

  3. Тестирование и валидация: Используйте команды типа postfix check для проверки конфигурации до запуска служб. Это может помочь в раннем выявлении потенциальных ошибок.

  4. Изучение системных сообщений: Перед работой с системными службами, полезно изучить, какие именно команды и скрипты выполняются при низком уровне запуска системы.

Таким образом, ваша проблема с запуском Postfix через systemctl была связана с ошибкой в пути к сертификату SSL и была исправлена путем его корректной замены. Продолжая анализировать и устранять подобные проблемы, вы повысите стабильность работы ваших серверов и уменьшите вероятность возникновение ошибок в будущем.

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

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