2012년 10월 23일 화요일

SENDMAIL SMTP 인증

참 많이 애먹이는 넘이다.
그냥 단순한 메일서버로 사용하는데는 리눅스 설치CD에 포함된 기본 사양으로
아무 문제가 없다.
설치하고 인터넷에서 참고한 자료대로 /etc/mail/sendmail.mc 수정하고
m4로 sendmail.cf 만들어 주고 실행 시키면 된다.

그런데 이렇게만 하면 스패머들이 무쟈게 좋아한다.
아마 당신회사 메일서버로 엄청나게 많은 스팸메일들이 발송될거고
당신 회사의 메일주소는 누구도 반가워 하지 않는 주소중의 한개가 될거다.

인터넷 찾아보면 sendmail.mc 파일의 다음 세 줄의 코멘트를 제거하고 일부 수정하면
smtp 인증이 아주 자알 될것처럼 써있다.

============================================================
1.
dnl # TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN’)dnl
을 아래처럼
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN’)dnl


2.
dnl # define(`confAUTH_MECHANISMS’, `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN’)dnl
을 아래처럼
define(`confAUTH_MECHANISMS’, `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN’)dnl

3.
dnl # DAEMON_OPTION('Port=smtp, Addr=127.0.0.1, Name=MTA') dnl
을 아래처럼
DAEMON_OPTION('Port=smtp, Addr=0.0.0.0, Name=MTA') dnl
============================================================
그리고 /etc/mail/access 파일은
============================================================
# Check the /usr/share/doc/sendmail/README.cf file for a description
# of the format of this file. (search for access_db in that file)
# The /usr/share/doc/sendmail/README.cf is part of the sendmail-doc
# package.
#
# If you want to use AuthInfo with "M:PLAIN LOGIN", make sure to have the
# cyrus-sasl-plain package installed.
#
# By default we allow relaying from localhost...
Connect:localhost.localdomain        RELAY
Connect:localhost            RELAY
Connect:127.0.0.1            RELAY
============================================================
이렇게만 있어야 한다. 이거  이렇게 만들고 나서
makemap hash /etc/mail/access.db < /etc/mail/access
커맨드로 Relay 맵을 만들어 줘야한다.

이제 돌거 같은가?
천만의 말씀이다. 이것만 해서는 절대로 안된다. 아예 메일 서버에 로그인도 안될거다.
애들이 돌기 위해서는 saslauthd 라는 데몬도 돌아야 한다. 그런데 이 부분에 대한 설명이 참 성의 없다.
그냥 돌리면 돌긴 한다. 그런데 역시 인증 안받아 준다. 이넘도 만줘줘야 하는 부분이 꽤 있다.
=============================================================
1.
/etc/sasl2/Sendmail.conf  파일을 다음과 같이 바꿔라.
pwcheck_method: saslauthd
allowanonymouslogin: 0
allowplaintext: 1
mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5

2.
/etc/sysconfig/saslauthd 파일을 다음과 같이 바꿔라.
# Directory in which to place saslauthd's listening socket, pid file, and so
# on.  This directory must already exist.
SOCKETDIR=/run/saslauthd

# Mechanism to use when checking passwords.  Run "saslauthd -v" to get a list
# of which mechanism your installation was compiled with the ablity to use.
MECH=shadow
SASLAUTHD_AUTHMECH=shadow

# Additional flags to pass to saslauthd on the command line.  See saslauthd(8)
# for the list of accepted flags.
FLAGS=
=============================================================

그리고 나서
systemd-systemctl restart saslauthd.service
systemd-systemctl restart sendmail.service
이렇게 두개의 서비스를 실행 시켜야 된다.

이제 아웃룩이나 썬더버드를 통해서 메일을 주고 받을 수 있다.
참 오랜 시간을 버벅거리고 헤매도 다녔다. 쓸모 있는 문서가 없더만...
난 어케 알았냐고? 맨땅에 헤딩했다.
이 문서, 저 문서 다 읽어보고 약간의 상상력 발휘하고...

참고로 내가 사용한 시스템은
FedoraCore 17이다. (이 배포판 참 맘에 안든다.)

댓글 없음:

댓글 쓰기