외부에 있는 SMTP 서버(구글등)를 이용해서 메일을 보내는 방법입니다 네이버웍스나 구글앱스, 다음 도메인메일서비스등과 함께 사용하면 여러가지 이점이 있는데 메일서버를 구축하기 어려운 환경이라던지(유동IP) 혹은 화이트도메인, SPF등의 설정이 없더라도 구글메일을 이용하기에 스팸으로 분류되지 않을 수 있습니다.
환경 : CentOS 6.4 Minimal
MTA : Postfix
설정방법
postfix는 설치되어 있다는 가정하에 진행된다.
1. postfix 설정
vi /etc/postfix/main.cf
# 아래의 구문을 main.cf에 추가
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_sasl_password_maps = hash:/etc/postfix/gmail
2. /etc/postfix/gmail를 생성
새로 gmail 파일을 만들면서 아래와 같이 구문을 추가한다(본인의 gmail계정:계정패스워드와 같이 입력한다).
vi /etc/postfix/gmail
[smtp.gmail.com]:587 username@gmail.com:password
gmail 파일의 퍼미션을 변경한다.
chmod 600 /etc/postfix/gmail
postmap을 통해 조회 테이블을 만든다. 이 명령어를 사용하면 gmail.db 파일이 생성된다.
postmap /etc/postfix/gmail
3. CA certificate(인증서)를 생성
CA certificate를 생성할때 make 명령어를 사용하는데 CentOS 6.4 Minimal엔 설치되어 있지 않다.
yum install make
디렉토리 위치를 변경한다.
cd /etc/pki/tls/certs
키와 테스트 인증서를 하나의 파일에 생성한다.
make hostname.pem
아래와 같은 입력 커맨드가 뜨면 적당히 입력한다.
# 국가코드
Country Name (2 letter code) [GB]: kr
# 도이름
State or Province Name (full name) [Berkshire]: Gyeonggi-do
# 도시이름
Locality Name (eg, city) [Newbury]: Ansan-si
# 회사이름
Organization Name (eg, company) [My Company Ltd]: test-uzuro
# 부서명
Organizational Unit Name (eg, section) []: uzuro-devel
# 이름 또는 호스트이름
Common Name (eg, your name or your server’s hostname) []: test.uzuro.com
# 이메일주소
Email Address []: test@gmail.com
생성된 hostname.pem 파일을 복사
cp /etc/pki/tls/certs/hostname.pem /etc/postfix/cacert.pem
4. 추가 설치
SASL 관련 에러가 나기에 설치했다.
yum install cyrus-sasl-plain
5. 서비스 재시작
service postfix restart
6. 메일 테스트
http://webdir.tistory.com/165을 참고하여 메일을 보내본다.
참고
리눅스에는 메일계정을 다른 메일주소나 다른 계정으로 매칭하는 기능을 하는 /etc/aliases가 있다. 이 파일의 최하단을 보면 아래와 같다.
# Person who should get root's mail
#root: marc
root: 원하는 메일주소(ID@XXX.com)
root에 대한 aliases를 설정할 수 있는데 원하는 메일주소를 넣어두면 시스템에서 root유저에 보내는 메일(보안이나 긴급상황)들이 넣어둔 메일주소로 발송되니 여러모로 활용할 수 있다.
문제해결
메일 전송이 되지 않는 경우 메일로그를 살펴보고 에러를 찾아낸다.
cat /var/log/maillog
오류1
connect to smtp.gmail.com[2607:f8b0:400e:c02::6d]:587: Network is unreachable
위와 같은 에러는 inet_protocols = all
일 경우 발생한다. 먼가 아직 ipv6 과의 연동이 불안전 한가 보다.
오류 해결
vi /etc/postfix/main.cf
inet_protocols = ipv4
오류2
certificate verification failed for smtp.gmail.com[74.125.47.109]:587: untrusted issuer /C=US/O=Equifax/OU=Equifax Secure Certificate Authority
위와 같은 에러는 smtp_tls_CAfile 이 없거나 지정되지 않아서 그렇다.
오류 해결
vi /etc/postfix/main.cf
smtp_tls_CAfile = /etc/postfix/cacert.pem
오류3
warning: SASL authentication failure: No worthy mechs found
위와 같은 에러가 발생할 경우 설치한다.
오류 해결
yum install cyrus-sasl-plain
'리눅스 > CentOS' 카테고리의 다른 글
[CentOS] 방화벽 설정 - iptables (65) | 2013.07.01 |
---|---|
[CentOS] APM 설치 - yum (8) | 2013.07.01 |
[CentOS] postfix를 이용한 메일서버 구축 (2) | 2013.06.26 |
[CentOS] 메일서버 구축시 유의사항 (0) | 2013.06.25 |
[CentOS] mail - 리눅스서버 자체의 메일클라이언트 (1) | 2013.06.25 |