컴퓨터 / Computer

sendmail 이 동작하지 않을때

Sendmail.org small logo.gif



어느날 갑자기 sendmail이 동작하지 않는다. 아니 "어느날 갑자기"는 해킹 당한 경우일 것이고 보통은 뭔가 작업을 했는데 그 작업이 시스템 설정을 변경한 경우일 것이다.


보통은 보안 설정을 강화했는데 그 설정이 예상하지 못한 결과를 가져온 경우다.


 Sep 23 17:41:25 cronos sendmail[1804]: accepting connections again for daemon MTA

Sep 23 18:02:28 cronos sendmail[1524]: starting daemon (8.14.4): SMTP+queueing@01:00:00

Sep 23 18:02:30 cronos sm-msp-queue[1533]: starting daemon (8.14.4): queueing@01:00:00

Sep 23 18:03:31 cronos sendmail[1547]: x8N93VmZ001547: from=checkbox, size=213, class=0, nrcpts=1, msgid=<201909230903.x8N93VmZ001547@cronos.checkbox.co.kr>, relay=root@localhost

Sep 23 18:03:34 cronos sendmail[1548]: NOQUEUE: tcpwrappers (localhost, 127.0.0.1) rejection

Sep 23 18:03:34 cronos sendmail[1547]: x8N93VmZ001547: to=soneus, ctladdr=checkbox (500/500), delay=00:00:03, xdelay=00:00:02, mailer=relay, pri=30213, relay=[127.0.0.1] [127.0.0.1], dsn=5.0.0, stat=Service unavailable



뭐든 동작이 잘 안된다면 로그를 살펴야 한다. sendmail의 경우 /var/log에 maillog 라는 파일로 로그를 남긴다. 위 예제는 보안 설정을 강화한 후에 이메일 발송이 안되어 나타난 경우다. 위 경우에 어느 부분에 중점을 두어야 할까? 이것저것 찾아보니 아래 문구가 핵심이었다.



 tcpwrappers (localhost, 127.0.0.1) rejection


무엇이 문제이길래 저런 오류가 났을까. 어떤 부분의 설정을 바꾸었는지 곰곰히 생각해보니 /etc 아래의 hosts.allow 와 hosts.deny 를 바꾸었다. 잘못된 사례는 아래와 같다.


* hosts.allow

 sshd: xxx.xxx.xxx.xxx


* hosts.deny

 ALL: ALL


위 사례는 모든 서비스에 모든 ip를 다 막아 둔 상태에서 sshd 포트에 접속할 수 있는 ip만 할당을 한 것이다. CentOS 6이하 버전에서 서비스할때는 아래와 같이 바꿔야 한다.



* hosts.allow

 sshd: xxx.xxx.xxx.xxx

 sendmail: ALL

 httpd: ALL

 ALL: 127.0.0.1


* hosts.deny

 ALL: ALL



이렇게 하면 hosts.deny 에 의해 강화된 항목에 예외처리로 sendmail 발송 기능을 살릴 수 있다. 그리고 sendmail이 동작하지 않는 사례에 대해서는 링크로 건 네이버 블로그를 참고하시기 바란다. 




Comments

이야기꾼 2020.02.23 16:06
한 가지 더 추가하자면, .forward 의 파일 속성도 관계가 있습니다.

-rw-rw-r-- 1 checkbox checkbox  22 Feb 23 00:54 .forward


위와 같으면 발송이 되는데 "x" 권한이 있거나 젤 뒤쪽에 "w"가 있으면 발송이 되지 않습니다.
꽁돌이 04.01 12:51
chmod 665 .forward

3M 프리미엄 스티커크리너 PIC10
바이플러스
3M 810 매직테이프 50mm x 65M
바이플러스
OPP 투명접착 8X20+4cm 200장
칠성상회
(Box) OPP봉투 접착 8X20+4 3100장
칠성상회