![보내기만 하도록 sendmail 구성](https://linux55.com/image/4148/%EB%B3%B4%EB%82%B4%EA%B8%B0%EB%A7%8C%20%ED%95%98%EB%8F%84%EB%A1%9D%20sendmail%20%EA%B5%AC%EC%84%B1.png)
이메일을 듣고 받는 대신 이메일을 보내기만 하도록 sendmail을 구성하고 싶습니다. 나는 /etc/mail/sendmail.conf다음을 가지고 있습니다 :
DAEMON_MODE="None";
QUEUE_MODE="Daemon";
iptables가 비활성화되었습니다(일시적으로, 이 테스트에만 해당).
하지만/var/log/mail/mail.log
Nov 18 13:40:04 novy sm-msp-queue[13548]: rAIC9RiF012445: [email protected], ctladdr=root (0/0), delay=00:30:37, xdelay=00:00:00, mailer=relay, pri=390130, relay=[127.0.0.1] [127.0.0.1], dsn=4.0.0, stat=Deferred: Connection refused by [127.0.0.1]
이메일을 설정하면 /etc/mail/sendmail.conf DAEMON_MODE="Daemon";
성공적으로 전송되었습니다.
꼭 들어야 하나요?
답변1
sendmail
이는 sendmail을 "대체"하는 척하는 것이 아니라 실제로 무언가를 실행하는 경우에 적용됩니다.
기본 설치가 일반적으로 작동하는 방식 sendmail
은 다음과 같습니다.
- (적어도) localhost:25를 수신하는 MTA 데몬
- clientmqueue에서 데몬을 실행하는 MTA의 비수신 MSP 대기열로 보냅니다.
/var/spool/mqueue
각 경우에 스풀 디렉토리가 있습니다 /var/spool/clientmqueue
. 이들은 서로 다른 권한을 가지며 원래 로컬 메일 제출 시 clientmqueue 스풀에 쓰기 위해 setgid "smmsp"가 필요한 setuid-root 바이너리 관련 문제를 해결하기 위한 것이었습니다.
예를 들어 sendmail(또는 mailx)을 사용하여 이메일을 보낼 때 "클라이언트" 모드를 사용하고 localhost에 연결할 수 없는 경우 clientmqueue에 추가하고(또는 대기열을 강제로 설정할 수 있음 -ODeliveryMode=q
) 큐 러너는 주기적으로 다시 시도해 보세요.
주목해야 할 중요한 점은 제출 프로세스가 가능한 한 적은 권한으로 가능한 한 적은 작업을 수행하려고 하기 때문에 항상 sendmail 수신기가 있다는 것입니다. 위의 오류 로그는 제출 프로세스가 MTA 데몬에 연결할 수 없다는 것입니다(사용자가 종료했기 때문에).
간단한 옵션은
다음을 통해 청취 데몬이 127.0.0.1(및/또는 ::1)인지 확인하세요.
DAEMON_OPTIONS(`포트=smtp, 주소=127.0.0.1, 이름=제출')
파일 에서는
sendmail.mc
자체에서만 수신할 수 있습니다(비록 이는 인바운드 SMTP를 차단하기 위해 iptables를 사용하는 것과 크게 다르지는 않습니다). 이는 "듣지 않고 수신하지 않음"을 의미하는 경우에만 해결책입니다.웹에서".127.0.0.1에 연결하기 위한 "커밋" 기본값을 변경합니다.
특성(`msp', `[127.0.0.1]')
127.0.0.1을 "스마트 호스트" 또는 로컬 SMTP 릴레이로 바꾸세요.
위의 변경 사항을 적용하려면 추가 패키지일 수 있는 sendmail cf/m4 지원 파일을 설치해야 합니다. 소스 .mc 파일(일반적으로 sendmail.mc
및 submit.mc
)에 표시된 지시어를 추가/수정하고 제공된 make 스크립트를 실행하여 sendmail.cf
및/또는 submit.cf
파일을 다시 빌드합니다.
위의 효과를 얻기 위해 파일을 직접 수정하는 용감한 영혼을 발견하게 될 것입니다 .cf
. 나는 이 접근 방식을 권장하지 않습니다...