— 이강우 2016/08/26 10:55
아래 내용을 /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
/etc/sasl2/smtpd.conf 내용 확인
pwcheck_method: saslauthd mech_list: PLAIN LOGIN
chkconfig saslauthd on chkconfig postfix on service saslauthd start service postfix start
$ 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
로그인 부분을 아래와 같이 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방식으로 하나씩 테스트 해보는게 좋다.