내 설정에는 exim 명령줄을 통해 로컬 사용자에게 메일을 보내는 스크립트가 포함되어 있습니다. 스크립트는 루트라고 합니다(현실은 물론 더 복잡하지만 이는 최소한의 작업 예제인 것 같습니다).
/home/jens/send_mail:
#!/bin/sh
cat /home/jens/testmail | /usr/bin/exim -bm jens
루트 셸에서 이 스크립트를 실행하면 정상적으로 작동합니다. 메일이 성공적으로 전달되었습니다.
이제 이 스크립트를 자동화하고 systemd 서비스에서 호출하려고 합니다.
/etc/systemd/system/send_mail.service:
[Unit]
Description=Send mail to jens
[Service]
Type=oneshot
ExecStart=/home/jens/send_mail
[Install]
WantedBy=multi-user.target
실행에서는 systemctl start send_mail.service
메시지를 전달하지 않지만 나중에 전달하기 위해 exim 큐에 넣습니다. 실제 설정에서는 해당 줄이 읽고 있는 것으로 나타났습니다.
... exim[275968]: 2020-07-16 23:09:40 1jwB8O-0019n4-Lj failed to write to main log: length=91 result=-1 errno=9 (Bad file descriptor)
... exim[275968]: write failed on panic log: length=116 result=-1 errno=9 (Bad file descriptor)
내 일기장에. 내가 아는 한, 내 루트 쉘에는 exim 관련 환경 변수가 없습니다. 이렇게 다른 행동이 나타나는 이유는 무엇일까요?
저는 Arch Linux에서 exim 4.94를 사용하고 있습니다. 자세한 내용이 필요하면 문의하세요.
답변1
send_mail
이 문제는 실행이 완료되는 즉시 생성된 exim 프로세스를 종료하는 systemd로 인해 발생한 것으로 보입니다.
이 문제는 종료 시 적절한 시간 동안 기다리 send_mail
거나 KillMode
systemd 장치의 옵션을 process
또는 로 설정하면 none
해결 될 수 있습니다(설명서에서는 이렇게 하지 말 것을 권장함).
원천: