새로운 일을 받았다.

1. postfix를 구축해라

2. 사용자 인증을 받게하라

3. smtp서버에 바로접근하는게 아니라, 2개의 smtp서버 구축 후 relay를 시켜라!


나는 smtp에대한 지식이 전무하다.

구축하면서 얻는 지식에대해 정리해갈 예정이다.


1. postfix를 구축하라는 인터넷에 많아서 그냥 구축했다. (https://www.lesstif.com/pages/viewpage.action?pageId=18219586) 이거보고 구축했다.


2. 사용자 인증을 받게하라 .. 이게 매우 애매했다. 일단 시작해 보자!

인터넷에 찾아보니, SASL인증을 받으면 해결 될 것같다.

SASL(Simple Authentication and Security Layer)은 인터넷 프로토콜에서 인증과 데이터보안을 위한 프레임워크이다. 

일단은 이게 맞는지 모르겠다. ㅋㅋㅋㅋ


일단은 방금 안 사실 postfix는 리눅스 계정과 연계된다고 한다.


예를들어) 리눅스 계정 id가 asdf1234이면, main.cf에서 설정 한 domain이 메일주소가 된다.

asdf1234@설정한도메인값

아래는 한 블로그에서 퍼온 내용이다.


 ID는 linux 기본 계정 설정과 공유된다.


-계정생성

#useradd 사용자계정 (홈 디렉토리는 생성 안됨) <---- 이걸로 계정만 생성하면 해당 도메인으로 이메일이 주고받기 가능


#adduser 사용자계정 (홈 디렉토리까지 같이 생성)


-비번생성 및 수정

#passwd 사용자계정


-계정삭제

#userdel -r 사용자계정

(-r옵션은 홈디렉토리까지 한번에 삭제시켜준다)


위 명령어들로 linux 기본 계정은 물론 sendmail, postfix 메일 계정까지 동시에 관리한다.


출처: http://mosei.tistory.com/entry/sendmail-postfix-메일-계정-설정 [씹어먹는 블로그]



SASL Authentification 설정

설정을 위해, cyrus-sasl 패키지 설치하자!

sudo yum install cyrus-sasl
 
cd /etc/sasl2 
vi smtpd.conf


smtpd.conf가 다음 내용임을 확인

pwcheck_method: saslauthd
mech_list: plain login

sasl 실행

systemctl start saslauthd
계정 선택 후 비밀번호 입력


그다음 하나더 설치 해 줘야 할것이 있다.

너무 슬프게도 나는 이걸 몰라서 하루종일 헤맸다.

sudo yum install cyrus-sasl-plain
 
설치확인
saslauthd -v


main.cf수정

sudo vi /etc/postfix/main.cf
 
아래에 다음을 추가
smtpd_sasl_path = smtpd
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
smtpd_client_restrictions = permit_sasl_authenticated, reject
smtpd_relay_restrictions = permit_sasl_authenticated, reject
smtpd_recipient_restrictions = permit_auth_destination,permit_sasl_authenticated,reject

인터넷에 올라간 많은 설정을 보면 permit_mynetworks 설정이 있지만, 나는 빼버렸다. 

permit_mynetworks를 하게되면, mynetworks에 등록되어 있으면, 따로 인증을 거치지 않고 무조건 허용하겠다는 말이다.

하지만 그건 우리가 원한게 아니였기때문에 빼버렸다!

무조건 sasl인증을 받은 사람만이 우리 메일서버를 통해 메일을 보낼 수 있다.

main.cf를 변경했으니, smtp를 재시작 시키자!

sudo postfix stop
sudo postfix start


메일 인증을 받기전에, base64인코딩 된 idpw를 얻자

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


$ telnet localhost 25 Trying ::1... Connected to localhost. Escape character is '^]'. 220 도메인 ESMTP Postfix helo localhost 250 도메인 ehlo localhost 250-도메인 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-AUTH PLAIN LOGIN 250-AUTH=PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN   AUTH PLAIN 위에서받은 base64문자열   235 2.7.0 Authentication successful mail from:xxx@daum.net 250 2.1.0 Ok rcpt to:txxx@daum.net 250 2.1.5 Ok data 354 End data with <CR><LF>.<CR><LF> subject:test asdf . 250 2.0.0 Ok: queued as 5F1305FBB89 quit 221 2.0.0 Bye

사용자 인증이 완료되었다.

+ Recent posts