Postfix 서비스가 활성화되었지만 다시 시작한 후 시작할 수 없습니다.

Postfix 서비스가 활성화되었지만 다시 시작한 후 시작할 수 없습니다.

postfix시스템을 다시 시작한 후 서비스가 시작되지 않습니다. 우리는 OpenSuse 12.1을 기반으로 한 맞춤형 Linux 운영 체제를 사용하고 있으며 최근 검증 부서 /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프로그램이 다음과 잘 연결되는지 확인하려면 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이상없습니다 .sendmailpostfix

서비스를 시작해 보겠습니다.

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

OpenSuse 12.1 기반 운영 체제에서 실행 중이므로 journalctl아직 도입되지 않았습니다.systemd

고쳐 쓰다

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.

답변1

nss-lookup.target선택적 특수 대상 중 하나입니다 systemd. 이는 본질적으로 시작 프로세스에서 가상 이정표 역할을 합니다. 특히, DNS 조회에 영향을 미치는 모든 시스템 서비스( lwresd경우에 따라) .service는 시작해야 함을 파일에 지정 해야 합니다.앞으로 nss-lookup.target:

[Unit]
Wants=nss-lookup.target
Before=nss-lookup.target

...시작하기 위해 DNS 확인이 필요한 모든 서비스는 다음과 같이 간단히 지정할 수 있습니다.

[Unit]
After=nss-lookup.target

lwresd패키지가 이 구성표를 정확하게 따르지 않거나 사용자 정의 배포판에 현재 권장되는 방식 대신 systemd사용해야 할 이유가 있는 이전 버전이 있을 수 있습니다 .Requires=Wants=

systemd가 구성에서 정렬 충돌("정렬 주기")을 감지하면 이를 매우 기계적인 방식으로 해결합니다. 이는 전체 체계에서 항상 최적이지는 않습니다. 이 경우 문제는 lwresd과 의 정렬 인데 nss-lookup.target, 그 과정에서 부수적 피해로 Postfix가 생략된다.

nss-lookup.target선택 사항이기 때문에 Requires=Postfix에 대한 종속성으로 설정하는 것은 너무 강력하고 문제를 일으킬 수 있습니다... 여러분이 겪고 있는 것과 똑같습니다.

답변2

첫째, 추가 기능은 서비스가 시작되고 실행될 때 실제로 무슨 일이 일어나고 있는지 이해하는 데 유용한 로그를 LogLevel=debug제공합니다 . /etc/systemd/system.conf업데이트된 질문에서 언급했듯이 nss-lookup.target. 두 변수를 nss-lookup.target직접 삭제 하면 부팅 프로세스 중에 시스템을 시작할 수 있습니다 ./etc/systemd/system/postfix.service[Requires][After]postfix

관련 정보