Postfix服务启用,但不会重新启动

正如标题所说,重新启动系统后, postfix服务将不会启动。 我们正在使用我们自己定制的基于OpenSuse 12.1的Linux操作系统,最近validation部门发现由于在postfix的maildrop队列中取消发送邮件, /var版本库变得越来越大。

谁寄这些邮件? 我们有一些在系统之间共享一些日志的应用程序。

我正在寻找不同types的论坛为我的答案没有任何成功。

rebbot之后:

 $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 

我在这里findPostfix在重新启动时不启动 ,问题可能是与sendmail可能的冲突。 为了确保sendmail程序与postfix连接良好:

 $ 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 ... 

UPDATE

/etc/systemd/system.conf设置LogLevel=debug之后,我能够获得更多与此问题相关的数据。 在/var/log/messages/我find了这个:

 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发布),不再接收更新,所以我会考虑使用更新的操作系统。

你的日志显示了一些权限问题(postfix有一些用于非特权操作的帐户/组,所以它可能会有点混乱):

 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系统上,postfix的权限如下:

 > 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 

应用这些权限应该解决您的日志中看到的两个基本问题,postdrop和postqueue拥有不好的所有权和模式。

您可以运行sudo chkstat --warn --system来检查可能需要修复的权限,如果一切看起来不错,让它通过运行sudo chkstat --system --set

首先,在/etc/systemd/system.conf添加LogLevel=debug提供了有用的日志,以了解在启动运行时在服务上真正发生了什么。 正如我更新的问题中提到的,有一个命令与nss-lookup.target 。 通过直接在/etc/systemd/system/postfix.service中删除两个variables[Requires][After] nss-lookup.target ,系统就能够在启动过程中启动postfix

希望这可以帮助。

谢谢