Как указано в заголовке, служба постфикса
не запускается после перезагрузки системы. Мы используем нашу собственную ОС Linux на основе OpenSuse 12. 1 и недавно отдел проверки обнаружил, что репозиторий / var
становится все больше и больше из-за неотправленных писем в очереди почтовых сообщений postfix
.
Кто отправляет эти письма? У нас есть приложения, которые разделяют журналы между системами.
Я безуспешно искал ответы на разных форумах.
После реббота:
$systemctl status postfix.service
postfix.service - Postfix Mail Transport Agent
Loaded: loaded (/etc/systemd/system/postfix.service; enabled)
Active: inactive (dead)
CGroup: name=systemd:/system/postfix.service
Я нашел здесь Postfix не запускается перезагрузите , что проблема может быть в конфликте с sendmail
. Чтобы убедиться, что программа sendmail
хорошо связана с постфиксом
:
$ ldd /usr/sbin/sendmail
linux-vdso.so.1 => (0x00007fffa25ff000)
libpostfix-global.so.1 => /usr/lib64/libpostfix-global.so.1 (0x00007fdb174d2000)
libpostfix-util.so.1 => /usr/lib64/libpostfix-util.so.1 (0x00007fdb1729a000)
libc.so.6 => /lib64/libc.so.6 (0x00007fdb16f0a000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fdb16d06000)
libdb-4.8.so => /usr/lib64/libdb-4.8.so (0x00007fdb1698a000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007fdb16772000)
/lib64/ld-linux-x86-64.so.2 (0x00007fdb1770b000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fdb16555000)
, я также проверяю / var / log / messages
, и там нет никакой информации о sendmail
или даже postfix
сбой.
Давайте запустим службу:
$ systemctl start postfix.service
$ systemctl status postfix.service
postfix.service - Postfix Mail Transport Agent
Loaded: loaded (/etc/systemd/system/postfix.service; enabled)
Active: active (running) since Sat, 28 Jan 2017 21:49:37 +0300; 41s ago
Process: 3450 ExecStartPost=/etc/postfix/system/cond_slp register (code=exited, status=0/SUCCESS)
Process: 3444 ExecStartPost=/etc/postfix/system/wait_qmgr 60 (code=exited, status=0/SUCCESS)
Process: 3368 ExecStart=/usr/sbin/postfix start (code=exited, status=0/SUCCESS)
Process: 3366 ExecStartPre=/etc/postfix/system/update_chroot (code=exited, status=0/SUCCESS)
Process: 3363 ExecStartPre=/bin/echo Starting mail service (Postfix) (code=exited, status=0/SUCCESS)
Main PID: 3443 (master)
CGroup: name=systemd:/system/postfix.service
├ 3443 /usr/lib/postfix/master
├ 3445 pickup -l -t fifo -u
├ 3446 qmgr -l -t fifo -u
├ 3447 cleanup -z -t unix -u
├ 3466 trivial-rewrite -n rewrite -t unix -u
├ 3467 local -t unix
├ 3468 local -t unix
└ 3469 local -t unix
Хорошо. Перезагрузите систему, и служба станет неактивной (мертвой) . Вернувшись к / var / log
, я нашел этот файл mail.warn
$ cat mail.info
Jan 28 03:13:55 msx postfix/postfix-script[2527]: warning: not owned by group maildrop: /usr/sbin/postqueue
Jan 28 03:13:55 msx postfix/postfix-script[2528]: warning: not owned by group maildrop: /usr/sbin/postdrop
Jan 28 03:13:55 msx postfix/postfix-script[2530]: warning: not set-gid or not owner+group+world executable: /usr/sbin/postqueue
Jan 28 03:13:55 msx postfix/postfix-script[2531]: warning: not set-gid or not owner+group+world executable: /usr/sbin/postdrop
Jan 28 21:49:37 msx postfix/postfix-script[3430]: warning: not owned by group maildrop: /usr/sbin/postqueue
Jan 28 21:49:37 msx postfix/postfix-script[3431]: warning: not owned by group maildrop: /usr/sbin/postdrop
Jan 28 21:49:37 msx postfix/postfix-script[3434]: warning: not set-gid or not owner+group+world executable: /usr/sbin/postqueue
Jan 28 21:49:37 msx postfix/postfix-script[3435]: warning: not set-gid or not owner+group+world executable: /usr/sbin/postdrop
Я не знаю, не поможет ли это решить мою проблему.
Дополнительная информация
Внутри файл postfix.service
:
$ cat /etc/systemd/system/postfix.service
[Unit]
Description=Postfix Mail Transport Agent
Requires=var-run.mount nss-lookup.target network.target remote-fs.target syslog.target time-sync.target
After=var-run.mount nss-lookup.target network.target remote-fs.target syslog.target time-sync.target
After=amavis.service mysql.service cyrus.service ldap.service openslp.service ypbind.service
Before=mail-transfer-agent.target
Conflicts=sendmail.service exim.service
[Service]
Type=forking
PIDFile=/var/spool/postfix/pid/master.pid
ExecStartPre=-/bin/echo 'Starting mail service (Postfix)'
EnvironmentFile=-/etc/sysconfig/postfix
ExecStartPre=/etc/postfix/system/update_chroot
ExecStart=/usr/sbin/postfix start
ExecStartPost=/etc/postfix/system/wait_qmgr 60
ExecStartPost=/etc/postfix/system/cond_slp register
ExecReload=/usr/sbin/postfix reload
ExecReload=/usr/sbin/postfix flush
ExecStop=/usr/sbin/postfix stop
ExecStopPost=/etc/postfix/system/cond_slp deregister
[Install]
WantedBy=multi-user.target
Список всех служб после перезагрузки без запуска службы postfix
.
$systemctl list-unit-files --type=service
...
klog.service disabled
klogd.service masked
ldconfig.service masked
loadmodules.service masked
local.service static
localfs.service static
openhpid.service enabled
postfix.service enabled
postgresql.service static
poweroff.service static
proc.service masked
...
После установки LogLevel = debug
в /etc/systemd/system.conf
мне удалось получить больше данных, связанных с этой проблемой. В / var / log / messages /
я обнаружил следующее:
Jan 31 19:17:00 msx kernel: 10.111126] systemd[1]: -.mount changed dead -> mounted
Jan 31 19:17:00 msx kernel: 10.111147] systemd[1]: Activating default unit: default.target
Jan 31 19:17:00 msx kernel: 10.111153] systemd[1]: Trying to enqueue job multi-user.target/start/replace
Jan 31 19:17:00 msx kernel: 10.111204] systemd[1]: Cannot add dependency job for unit hpiwdt.service, ignoring: Unit hpiwdt.service failed to load: No such file or directory. See system logs and 'systemctl status hpiwdt.service' for details.
Jan 31 19:17:00 msx kernel: 10.111276] systemd[1]: Found ordering cycle on lwresd.service/start
Jan 31 19:17:00 msx kernel: 10.111279] systemd[1]: Walked on cycle path to nss-lookup.target/start
Jan 31 19:17:00 msx kernel: 10.111281] systemd[1]: Walked on cycle path to lwresd.service/start
Jan 31 19:17:00 msx kernel: 10.111284] systemd[1]: Breaking ordering cycle by deleting job nss-lookup.target/start
Jan 31 19:17:00 msx kernel: 10.111286] systemd[1]: Deleting job postfix.service/start as dependency of job nss-lookup.target/start
Я даже не знаю, что такое или выполняет nss-lookup
. Вернувшись к / var / log
, я нашел этот файл mail.warn
$ cat mail.info
Jan 28 03:13:55 msx postfix/postfix-script[2527]: warning: not owned by group maildrop: /usr/sbin/postqueue
Jan 28 03:13:55 msx postfix/postfix-script[2528]: warning: not owned by group maildrop: /usr/sbin/postdrop
Jan 28 03:13:55 msx postfix/postfix-script[2530]: warning: not set-gid or not owner+group+world executable: /usr/sbin/postqueue
Jan 28 03:13:55 msx postfix/postfix-script[2531]: warning: not set-gid or not owner+group+world executable: /usr/sbin/postdrop
Jan 28 21:49:37 msx postfix/postfix-script[3430]: warning: not owned by group maildrop: /usr/sbin/postqueue
Jan 28 21:49:37 msx postfix/postfix-script[3431]: warning: not owned by group maildrop: /usr/sbin/postdrop
Jan 28 21:49:37 msx postfix/postfix-script[3434]: warning: not set-gid or not owner+group+world executable: /usr/sbin/postqueue
Jan 28 21:49:37 msx postfix/postfix-script[3435]: warning: not set-gid or not owner+group+world executable: /usr/sbin/postdrop
Я не знаю, не поможет ли это решить мою проблему.
Дополнительная информация
Внутри файл postfix.service
:
$ cat /etc/systemd/system/postfix.service
[Unit]
Description=Postfix Mail Transport Agent
Requires=var-run.mount nss-lookup.target network.target remote-fs.target syslog.target time-sync.target
After=var-run.mount nss-lookup.target network.target remote-fs.target syslog.target time-sync.target
After=amavis.service mysql.service cyrus.service ldap.service openslp.service ypbind.service
Before=mail-transfer-agent.target
Conflicts=sendmail.service exim.service
[Service]
Type=forking
PIDFile=/var/spool/postfix/pid/master.pid
ExecStartPre=-/bin/echo 'Starting mail service (Postfix)'
EnvironmentFile=-/etc/sysconfig/postfix
ExecStartPre=/etc/postfix/system/update_chroot
ExecStart=/usr/sbin/postfix start
ExecStartPost=/etc/postfix/system/wait_qmgr 60
ExecStartPost=/etc/postfix/system/cond_slp register
ExecReload=/usr/sbin/postfix reload
ExecReload=/usr/sbin/postfix flush
ExecStop=/usr/sbin/postfix stop
ExecStopPost=/etc/postfix/system/cond_slp deregister
[Install]
WantedBy=multi-user.target
Список всех служб после перезагрузки без запуска службы postfix
.
$systemctl list-unit-files --type=service
...
klog.service disabled
klogd.service masked
ldconfig.service masked
loadmodules.service masked
local.service static
localfs.service static
openhpid.service enabled
postfix.service enabled
postgresql.service static
poweroff.service static
proc.service masked
...
После установки LogLevel = debug
в /etc/systemd/system.conf
мне удалось получить больше данных, связанных с этой проблемой. В / var / log / messages /
я нашел следующее:
Jan 31 19:17:00 msx kernel: 10.111126] systemd[1]: -.mount changed dead -> mounted
Jan 31 19:17:00 msx kernel: 10.111147] systemd[1]: Activating default unit: default.target
Jan 31 19:17:00 msx kernel: 10.111153] systemd[1]: Trying to enqueue job multi-user.target/start/replace
Jan 31 19:17:00 msx kernel: 10.111204] systemd[1]: Cannot add dependency job for unit hpiwdt.service, ignoring: Unit hpiwdt.service failed to load: No such file or directory. See system logs and 'systemctl status hpiwdt.service' for details.
Jan 31 19:17:00 msx kernel: 10.111276] systemd[1]: Found ordering cycle on lwresd.service/start
Jan 31 19:17:00 msx kernel: 10.111279] systemd[1]: Walked on cycle path to nss-lookup.target/start
Jan 31 19:17:00 msx kernel: 10.111281] systemd[1]: Walked on cycle path to lwresd.service/start
Jan 31 19:17:00 msx kernel: 10.111284] systemd[1]: Breaking ordering cycle by deleting job nss-lookup.target/start
Jan 31 19:17:00 msx kernel: 10.111286] systemd[1]: Deleting job postfix.service/start as dependency of job nss-lookup.target/start
Я даже не знаю, что такое или выполняет nss-lookup
. Вернувшись к / var / log
, я нашел этот файл mail.warn
$ cat mail.info
Jan 28 03:13:55 msx postfix/postfix-script[2527]: warning: not owned by group maildrop: /usr/sbin/postqueue
Jan 28 03:13:55 msx postfix/postfix-script[2528]: warning: not owned by group maildrop: /usr/sbin/postdrop
Jan 28 03:13:55 msx postfix/postfix-script[2530]: warning: not set-gid or not owner+group+world executable: /usr/sbin/postqueue
Jan 28 03:13:55 msx postfix/postfix-script[2531]: warning: not set-gid or not owner+group+world executable: /usr/sbin/postdrop
Jan 28 21:49:37 msx postfix/postfix-script[3430]: warning: not owned by group maildrop: /usr/sbin/postqueue
Jan 28 21:49:37 msx postfix/postfix-script[3431]: warning: not owned by group maildrop: /usr/sbin/postdrop
Jan 28 21:49:37 msx postfix/postfix-script[3434]: warning: not set-gid or not owner+group+world executable: /usr/sbin/postqueue
Jan 28 21:49:37 msx postfix/postfix-script[3435]: warning: not set-gid or not owner+group+world executable: /usr/sbin/postdrop
Я не знаю, не поможет ли это решить мою проблему.
Дополнительная информация
Внутри файл postfix.service
:
$ cat /etc/systemd/system/postfix.service
[Unit]
Description=Postfix Mail Transport Agent
Requires=var-run.mount nss-lookup.target network.target remote-fs.target syslog.target time-sync.target
After=var-run.mount nss-lookup.target network.target remote-fs.target syslog.target time-sync.target
After=amavis.service mysql.service cyrus.service ldap.service openslp.service ypbind.service
Before=mail-transfer-agent.target
Conflicts=sendmail.service exim.service
[Service]
Type=forking
PIDFile=/var/spool/postfix/pid/master.pid
ExecStartPre=-/bin/echo 'Starting mail service (Postfix)'
EnvironmentFile=-/etc/sysconfig/postfix
ExecStartPre=/etc/postfix/system/update_chroot
ExecStart=/usr/sbin/postfix start
ExecStartPost=/etc/postfix/system/wait_qmgr 60
ExecStartPost=/etc/postfix/system/cond_slp register
ExecReload=/usr/sbin/postfix reload
ExecReload=/usr/sbin/postfix flush
ExecStop=/usr/sbin/postfix stop
ExecStopPost=/etc/postfix/system/cond_slp deregister
[Install]
WantedBy=multi-user.target
Список всех служб после перезагрузки без запуска службы postfix
.
$systemctl list-unit-files --type=service
...
klog.service disabled
klogd.service masked
ldconfig.service masked
loadmodules.service masked
local.service static
localfs.service static
openhpid.service enabled
postfix.service enabled
postgresql.service static
poweroff.service static
proc.service masked
...
После установки LogLevel = debug
в /etc/systemd/system.conf
мне удалось получить больше данных, связанных с этой проблемой. В / var / log / messages /
я нашел следующее:
Jan 31 19:17:00 msx kernel: 10.111126] systemd[1]: -.mount changed dead -> mounted
Jan 31 19:17:00 msx kernel: 10.111147] systemd[1]: Activating default unit: default.target
Jan 31 19:17:00 msx kernel: 10.111153] systemd[1]: Trying to enqueue job multi-user.target/start/replace
Jan 31 19:17:00 msx kernel: 10.111204] systemd[1]: Cannot add dependency job for unit hpiwdt.service, ignoring: Unit hpiwdt.service failed to load: No such file or directory. See system logs and 'systemctl status hpiwdt.service' for details.
Jan 31 19:17:00 msx kernel: 10.111276] systemd[1]: Found ordering cycle on lwresd.service/start
Jan 31 19:17:00 msx kernel: 10.111279] systemd[1]: Walked on cycle path to nss-lookup.target/start
Jan 31 19:17:00 msx kernel: 10.111281] systemd[1]: Walked on cycle path to lwresd.service/start
Jan 31 19:17:00 msx kernel: 10.111284] systemd[1]: Breaking ordering cycle by deleting job nss-lookup.target/start
Jan 31 19:17:00 msx kernel: 10.111286] systemd[1]: Deleting job postfix.service/start as dependency of job nss-lookup.target/start
Я даже не знаю, что такое или выполняет nss-lookup
.
$ cat /etc/systemd/system/postfix.service
[Unit]
Description=Postfix Mail Transport Agent
Requires=var-run.mount nss-lookup.target network.target remote-fs.target syslog.target time-sync.target
After=var-run.mount nss-lookup.target network.target remote-fs.target syslog.target time-sync.target
After=amavis.service mysql.service cyrus.service ldap.service openslp.service ypbind.service
Before=mail-transfer-agent.target
Conflicts=sendmail.service exim.service
[Service]
Type=forking
PIDFile=/var/spool/postfix/pid/master.pid
ExecStartPre=-/bin/echo 'Starting mail service (Postfix)'
EnvironmentFile=-/etc/sysconfig/postfix
ExecStartPre=/etc/postfix/system/update_chroot
ExecStart=/usr/sbin/postfix start
ExecStartPost=/etc/postfix/system/wait_qmgr 60
ExecStartPost=/etc/postfix/system/cond_slp register
ExecReload=/usr/sbin/postfix reload
ExecReload=/usr/sbin/postfix flush
ExecStop=/usr/sbin/postfix stop
ExecStopPost=/etc/postfix/system/cond_slp deregister
[Install]
WantedBy=multi-user.target
Список всех служб после перезагрузки без запуска службы postfix
.
$systemctl list-unit-files --type=service
...
klog.service disabled
klogd.service masked
ldconfig.service masked
loadmodules.service masked
local.service static
localfs.service static
openhpid.service enabled
postfix.service enabled
postgresql.service static
poweroff.service static
proc.service masked
...
После установки LogLevel = debug
в /etc/systemd/system.conf
, мне удалось получить больше данных по этой проблеме. В / var / log / messages /
я обнаружил следующее:
Jan 31 19:17:00 msx kernel: 10.111126] systemd[1]: -.mount changed dead -> mounted
Jan 31 19:17:00 msx kernel: 10.111147] systemd[1]: Activating default unit: default.target
Jan 31 19:17:00 msx kernel: 10.111153] systemd[1]: Trying to enqueue job multi-user.target/start/replace
Jan 31 19:17:00 msx kernel: 10.111204] systemd[1]: Cannot add dependency job for unit hpiwdt.service, ignoring: Unit hpiwdt.service failed to load: No such file or directory. See system logs and 'systemctl status hpiwdt.service' for details.
Jan 31 19:17:00 msx kernel: 10.111276] systemd[1]: Found ordering cycle on lwresd.service/start
Jan 31 19:17:00 msx kernel: 10.111279] systemd[1]: Walked on cycle path to nss-lookup.target/start
Jan 31 19:17:00 msx kernel: 10.111281] systemd[1]: Walked on cycle path to lwresd.service/start
Jan 31 19:17:00 msx kernel: 10.111284] systemd[1]: Breaking ordering cycle by deleting job nss-lookup.target/start
Jan 31 19:17:00 msx kernel: 10.111286] systemd[1]: Deleting job postfix.service/start as dependency of job nss-lookup.target/start
Я даже не знаю, что такое или выполняет nss-lookup
.
$ cat /etc/systemd/system/postfix.service
[Unit]
Description=Postfix Mail Transport Agent
Requires=var-run.mount nss-lookup.target network.target remote-fs.target syslog.target time-sync.target
After=var-run.mount nss-lookup.target network.target remote-fs.target syslog.target time-sync.target
After=amavis.service mysql.service cyrus.service ldap.service openslp.service ypbind.service
Before=mail-transfer-agent.target
Conflicts=sendmail.service exim.service
[Service]
Type=forking
PIDFile=/var/spool/postfix/pid/master.pid
ExecStartPre=-/bin/echo 'Starting mail service (Postfix)'
EnvironmentFile=-/etc/sysconfig/postfix
ExecStartPre=/etc/postfix/system/update_chroot
ExecStart=/usr/sbin/postfix start
ExecStartPost=/etc/postfix/system/wait_qmgr 60
ExecStartPost=/etc/postfix/system/cond_slp register
ExecReload=/usr/sbin/postfix reload
ExecReload=/usr/sbin/postfix flush
ExecStop=/usr/sbin/postfix stop
ExecStopPost=/etc/postfix/system/cond_slp deregister
[Install]
WantedBy=multi-user.target
Список всех служб после перезагрузки без запуска службы postfix
.
$systemctl list-unit-files --type=service
...
klog.service disabled
klogd.service masked
ldconfig.service masked
loadmodules.service masked
local.service static
localfs.service static
openhpid.service enabled
postfix.service enabled
postgresql.service static
poweroff.service static
proc.service masked
...
После установки LogLevel = debug
в /etc/systemd/system.conf
, мне удалось получить больше данных по этой проблеме. В / var / log / messages /
я нашел следующее:
Jan 31 19:17:00 msx kernel: 10.111126] systemd[1]: -.mount changed dead -> mounted
Jan 31 19:17:00 msx kernel: 10.111147] systemd[1]: Activating default unit: default.target
Jan 31 19:17:00 msx kernel: 10.111153] systemd[1]: Trying to enqueue job multi-user.target/start/replace
Jan 31 19:17:00 msx kernel: 10.111204] systemd[1]: Cannot add dependency job for unit hpiwdt.service, ignoring: Unit hpiwdt.service failed to load: No such file or directory. See system logs and 'systemctl status hpiwdt.service' for details.
Jan 31 19:17:00 msx kernel: 10.111276] systemd[1]: Found ordering cycle on lwresd.service/start
Jan 31 19:17:00 msx kernel: 10.111279] systemd[1]: Walked on cycle path to nss-lookup.target/start
Jan 31 19:17:00 msx kernel: 10.111281] systemd[1]: Walked on cycle path to lwresd.service/start
Jan 31 19:17:00 msx kernel: 10.111284] systemd[1]: Breaking ordering cycle by deleting job nss-lookup.target/start
Jan 31 19:17:00 msx kernel: 10.111286] systemd[1]: Deleting job postfix.service/start as dependency of job nss-lookup.target/start
Я даже не знаю, что такое или выполняет nss-lookup
.
Если у кого-нибудь есть идеи.
Спасибо.
В остальном, openSUSE 12.1 немного устарел (выпущен в 2013 году), и больше не получает обновлений, поэтому я подумал бы об использовании более свежей ОС.
В вашем журнале есть некоторые проблемы с разрешениями (постфикс имеет несколько учетных записей/групп, которые он использует для непривилегированных действий, так что он может стать немного запутанным):
Jan 28 03:13:55 msx postfix/postfix-script[2527]: warning: not owned by group maildrop: /usr/sbin/postqueue
Jan 28 03:13:55 msx postfix/postfix-script[2528]: warning: not owned by group maildrop: /usr/sbin/postdrop
Jan 28 03:13:55 msx postfix/postfix-script[2530]: warning: not set-gid or not owner+group+world executable: /usr/sbin/postqueue
В более свежей системе SUSE разрешения на постфикс выдаются как:
> sudo cat /etc/permissions.d/postfix
/usr/sbin/sendmail root:root 0755
/etc/postfix/sasl_passwd root:root 0600
/etc/postfix/sasl_passwd.db root:root 0600
/usr/sbin/postqueue root:maildrop 2755
/usr/sbin/postdrop root:maildrop 2755
Применение этих разрешений должно решить две основные проблемы, видимые в вашем журнале, а также проблемы с постфиксом, имеющим плохое владение и плохой режим.
Вы можете запустить sudo chkstat --warn --system
, чтобы проверить, какие разрешения могут потребоваться для исправления, и если все выглядит хорошо, пусть он сделает свое дело, запустив sudo chkstat --system --set
Во-первых, добавление LogLevel=debug
на /etc/systemd/system.conf
предоставляет полезный журнал, чтобы понять, что на самом деле происходит со службами во время запуска. Как упоминалось в моем обновленном вопросе, был конфликт порядка с nss-lookup.target
. Удалив nss-lookup.target
непосредственно в /etc/systemd/system/postfix.service
в обеих переменных [Требуется]
и [После]
, система смогла запустить postfix
в процессе загрузки.
Надеюсь, это поможет.
Спасибо
.У вас может быть конфликт между Sendmail и Postfix. Убедитесь, что ваш Sendmail не запущен после перезагрузки, если вы планируете использовать Postfix в качестве основного почтового приложения. Оба приложения были настроены таким образом, чтобы избежать конфликта путем закрытия любого конфликтующего приложения, когда оно приближается к перезагрузке.
Возникла та же проблема после обновления до Cent OS 7.9
проблема была связана с тем, что sendmail
systemctl list-unit-files --type=service |grep -i -e postfix -e sendmail
postfix.service enabled
sendmail.service enabled
ввел следующую команду для отключения sendmail
systemctl disable sendmail.service
systemctl list-unit-files --type=service |grep -i -e postfix -e endmail
postfix.service enabled
sendmail.service disabled
Теперь Postfix запускается без каких-либо проблем после каждой перезагрузки.