저는 Centos x64(selinux 비활성화됨)에 정책 서버를 설정하려고 합니다. 이를 통해 다른 서버에서 들어오는 메시지 수와 (더 중요한) 다른 사용자 계정에서 나가는 메시지 수를 제한할 수 있습니다. 현재로서는 수신 메일(예: Google에서 보내는 메일)을 제한하기 위한 작업 구성이 있다고 생각하지만 postfix가 내부 및 발신 메일에 대해 동일한 정책 검사를 수행하도록 할 수는 없습니다.
여기에 문제가 있습니다. (지금은 postfix가 정책 서비스를 사용하도록 하려고 합니다.)
main.cf에 다음 줄을 추가했습니다.
smtpd_recipient_restrictions = check_policy_service inet:127.0.0.1:10031, reject_unauth_destination
smtpd_end_of_data_restrictions = check_policy_service inet:127.0.0.1:10031
그리고 비활성화된 정책(테스트용)
다른 호스트(예: Gmail)에서 이 시스템으로 메일을 보낼 때 postfix 로그에 정책 서버에 액세스할 수 없다는 오류가 있습니다.
Sep 10 10:40:23 centosvbox1 postfix/smtpd[9378]: connect from unknown[IP_ADDRESS]
Sep 10 10:40:23 centosvbox1 postfix/smtpd[9378]: warning: connect to 127.0.0.1:10031: Connection refused
Sep 10 10:40:23 centosvbox1 postfix/smtpd[9378]: warning: problem talking to server 127.0.0.1:10031: Connection refused
Sep 10 10:40:24 centosvbox1 postfix/smtpd[9378]: warning: connect to 127.0.0.1:10031: Connection refused
Sep 10 10:40:24 centosvbox1 postfix/smtpd[9378]: warning: problem talking to server 127.0.0.1:10031: Connection refused
이는 postfix가 정책 서버에 액세스하려고 시도한다는 것을 의미합니다(예상대로 작동함).
그러나 콘솔(mailx 사용)에서 사용자 루트(로컬 계정) 또는 다른 위치(gmail)로 메일을 보내려고 하면 그러한 조회가 이루어지지 않습니다. 정책에 액세스하지 않고도 메일이 그냥 통과됩니다.
echo "ksfdhjksf" | mail -s "kjfhkjsfkjsfd" root
Sep 10 10:42:03 centosvbox1 postfix/cleanup[9386]: 9B606417D9: message-id=<20130910084203.9B606417D9@domain>
Sep 10 10:42:03 centosvbox1 postfix/qmgr[9342]: 9B606417D9: from=<root@domain>, size=458, nrcpt=1 (queue active)
Sep 10 10:42:03 centosvbox1 postfix/local[9388]: 9B606417D9: to=<root@domain>, orig_to=<root>, relay=local, delay=0.04, delays=0.03/0.01/0/0.01, dsn=2.0.0, status=sent (delivered to mailbox)
Sep 10 10:42:03 centosvbox1 postfix/qmgr[9342]: 9B606417D9: removed
왜 check_policy_service가 작동하지 않는지 궁금합니다. (나는 이것이 접미사 문제라고 생각합니다)
메일을 보낼 때 정책에 따라 시스템 사용자(예: webapp)를 제한하는 방법을 아는 사람이 있나요?
답변1
정책 체크인을 정의했으므로 smtpd_*_restrictions
로컬에서 생성된 메일은 쿼리되지 않습니다. 이러한 종류의 메일은 서비스를 사용하여 Postfix 대기열에 삽입되기 때문입니다 pickup(8)
. 이를 방지하려면 인스턴스를 수정하고 서비스에 master.cf
추가 해야 합니다 (물론 해당 콘텐츠 필터링 인스턴스도 추가해야 합니다.content_filter
pickup(8)
콘텐츠 필터링.
FWIW, 나는 이것을 하기 위해 노력할 가치가 없다고 생각합니다. 누구도 메일 게이트웨이에서 로컬 메일을 생성할 수 없어야 하며~ 아니다중앙 메일 게이트웨이라면 어쨌든 잘못된 위치에서 제한하고 있는 것입니다.