목차

Postfix - SASL Authentification 설정

이강우 2016/08/26 10:55

구성

  1. cyrus-sasl 패키지 설치 되어있어야 함

main.cf 내용 수정

localhost 발송 전용

아래 내용을 /etc/postfix/main.cf 에 추가

smtpd_sasl_path = smtpd
smtpd_sasl_auth_enable = yes

어떤곳에서든 접속해서 어느곳으로나 보내길 원할때

아래 설정상 mynetworks가 any이므로 스팸메일이나 무작위 릴레이 서버로 이용될 수 있으므로
restrictions 설정을 통해 sasl 인증받은 요청에 한해서만 허용하며 나머지는 모두 거부하는 형태로 설정

smtpd_sasl_path = smtpd
smtpd_sasl_auth_enable = yes

smtpd_client_restrictions = permit_sasl_authenticated, reject
smtpd_relay_restrictions = permit_sasl_authenticated, reject

mynetworks = 0.0.0.0/0

SASL2 설정 확인

/etc/sasl2/smtpd.conf 내용 확인

pwcheck_method: saslauthd
mech_list: PLAIN LOGIN

서비스 재기동

chkconfig saslauthd on
chkconfig postfix on

service saslauthd start
service postfix start

서비스 확인

로그인 테스트 방법 1

$ telnet server.test.com 25
. . .
220 server.test.com ESMTP Postfix
EHLO client.test.com
250-server.test.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH PLAIN AHJlZGhhdAByZWRoYXQ=
235 2.0.0 Authentication successful

로그인 테스트를 위한 BASE64 인코딩 문자열 만드는 방법은 아래의 방법을 이용

echo -ne '\0username\0password' | base64

로그인 테스트 방법 2

로그인 부분을 아래와 같이 AUTH LOGIN 으로 진행하는 방법
처음 입력 부분은 ID, 두번째 입력 부분은 PASSWORD 의 BASE64 encode 문자열이다.

AUTH LOGIN
334 VXNlcm5hbWU6
amJvc3M=
334 UGFzc3dvcmQ6
Q2xvdWQxMiMk
235 2.7.0 Authentication successful

오류 해결

$ telnet server.test.com 25
. . .
220 server.test.com ESMTP Postfix
EHLO client.test.com
250-server.test.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH PLAIN AGpib3NzAENsb3VkMTIjJA==
535 5.7.8 Error: authentication failed: bad protocol / cancel

위와같이 테스트 하는데 bad protocol / cancel 이라고 나오는경우는 거의 아이디/암호가 잘못되어 나오는 경우이다.
BASE64 인코딩시에 주의 하여 재시도 해보거나 AUTH LOGIN방식으로 하나씩 테스트 해보는게 좋다.

참조링크