[server] Postfix : SASL 인증을 위해 간단한 파일을 사용하는 방법은 무엇입니까?

내 응용 프로그램에서 전자 메일을 보내려면 데비안 VPS에서 Postfix를 실행하고 싶습니다. 다른 VPS에서 실행되는 응용 프로그램은 SMTP를 통해 Postfix에 연결됩니다. Postfix는 수신 이메일을 처리 할 필요가 없습니다. 발신 메시지를 보내는 것입니다.

오픈 릴레이가되지 않도록하려면 SASL 인증을 사용해야합니다. 그러나 SASL 인증을 위해 Dovecot 또는 MySQL을 실행하고 싶지 않습니다.

간단한 파일 (사용자 이름 및 비밀번호 포함)을 사용하여 SASL 인증을 설정하려면 어떻게해야합니까?

나는 이미 비슷한 질문을 발견 했다 . 그러나 주어진 곳에 만족스러운 답변이 없습니다.



답변

Postfix는 현재 두 가지 SASL 인증 방법 만 지원합니다. 그중 하나는 당신이 원하지 않는 Dovecot입니다. 다른 하나는 사이러스 (Cyrus)로 Postfix를 다시 쓰지 않고 얻을 수있는만큼 원하는 것에 가깝습니다. 별도의 인증 데몬 ( saslauthd)을 실행해야 하지만 인증 파일을 쉽게 편집하고 업데이트 할 수 있습니다.

Cyrus SASL 사용에 대한 기본 사항 은 postfix documentation site 에서 찾을 수 있지만 여기에 간단한 설명이 있습니다. 제발 아무것도의 어떤 방법으로 혼동하는 경우 링크 봐!

플러그인으로 Cyrus SASL을 설치하여 시작하십시오 sasldb. (이를 수행하는 방법은 독자를위한 연습으로 남아 있습니다. 아마도 여러분의 유닉스 브랜드가 사용하고있는 패키지 시스템에 패키지가있을 것입니다.) Postfix와 SASL 간의 통신은 유닉스 도메인 소켓을 통해 이루어 지므로, SASL 그룹에 접미사를 추가하고 해당 그룹에 디렉토리에 대한 읽기 및 실행 권한이 있는지 확인하십시오 /var/run/saslauthd.

SASL 구성

/etc/sasl2/smtpd.conf를 편집하여 sasldb를 사용하도록 SASL을 구성하십시오.

pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5 NTLM

sasldb 플러그인은 sasl이 사용자 이름 및 비밀번호에 Berkeley DB 파일을 사용함을 의미합니다. 다음 명령으로 사용자를 추가하십시오 saslpasswd2.

$ saslpasswd2 -c -u example.com username
Password:
Again (for verification):

사용자 이름과 함께 도메인을 지정하면 사용자는 인증시 “username”이 아닌 “username@example.com”을 사용해야합니다.

를 실행하여 입력 한 사용자를 확인할 수 있습니다 sasldblistusers2.

saslauthd를 시작하고 다음을 수행하여 인증이 작동하는지 확인하십시오.

testsaslauthd -u username@example.com -p password

접미사 구성

이 작업이 완료되면 Postfix에 SASL을 사용하도록 알리고 /rus/postfix/main.cf를 편집하여 Cyrus에게 인증 중임을 SMTP에 알리십시오.

smtpd_sasl_auth_enable = yes
smtpd_sasl_path = smtpd

그런 다음 접미사를 다시로드하면 설정해야합니다.


답변

오픈 릴레이가되지 않도록하려면 SASL 인증을 사용해야합니다.

SASL은이를 방지하는 수많은 방법 중 하나 일뿐입니다. 다른 VPS에서 사용하는 IP를 허용 목록에 추가하거나 TLS 클라이언트 인증서를 요구하는 것도 가장 안전한 방법이라고 할 수 있습니다.

postfix 시스템에 서명 CA를 설정하고 이메일을 제출하려는 VPS 당 하나의 인증서에 서명하면됩니다.
그런 다음 제출 된 모든 메일에 대해 완전한 클라이언트 인증서 확인이 필요합니다. 다른 제출 방법을 비활성화하십시오.

postfix는 SASL을 직접 지원하지 않기 때문에 요청하는 것은 불가능합니다.


답변

몇 가지를 명확히하면

sasldb에서 계정 만들기 :

% saslpasswd2 -c -u fqdn username

인증 테스트 :

% testsaslauthd -u username -p password

(참고 : 사용자 이름 뒤에는 fqdn 이 없습니다 )

루트 계정을 만드는 것도 추가하고 싶습니다

% saslpasswd2 -c -u example.com root

인증 할 수 없습니다.

% testsaslauthd -u root -p some_password
0: NO "authentication failed"

그러나 이것은 버그가 아닙니다. 안전 기능 일뿐입니다.


답변

수신 메일을 처리 할 필요가 없으면 인증을 방해하지 않아도됩니다. 방화벽으로 들어오는 트래픽을 차단하거나 로컬 호스트로만 제한하십시오.

 inet_interfaces = 127.0.0.1

더 이상 공개 릴레이 문제가 없으며 postfix를 통해 메일을 보내야하는 응용 프로그램의 복잡성을 피합니다.


답변