"gmail 연동"에 해당되는 글 1건

  1. 2009/11/05 GMail 을 통해 Sendmail 이용하기 (2)

GMail 을 통해 Sendmail 이용하기

2009/11/05 12:34

GMail 을 통해 Sendmail 이용하는 방법
(편의상 존칭을 생략합니다. ^^)

보통 개인 서버를 운영을 할때나 , 또는 메일 서버가 화이트 도메인 셋팅이 안되어 있을때 GMail 을 통해서 메일을 보내는 방법이다. 일반적으로 호스팅을 이용할때는 거의 셋팅을 안하고 사용해도 무방하나 , 특수하게 GMail을 이용을 하고자 할때 사용해도 아주 좋은 방법이다 ^^

현재 서버는 집에서 운영이 되고 있으나 메일 서버는 Gmail을 이용하고 있어 sendmail 을 이용할 수가 없었다. PHP내에서 SMTP 관련 프로그램을 일일이 작성을 해야 하는 번거로움 때문에 이번에 다루는 내용은 PHP 내부 함수인 mail() 함수를 이용해서 손쉽게 메일을 보내는 방법이다.

우선 서버에 sendmail이 설치가 되어 있어야 한다. 발송 전용으로 사용하기 때문에 25번 포트를 열 필요는 없다 . 단지 sendmail을 통해서 gmail에 접속하여 보낸다는 것 이외에는 특이 사항은 없다.

1.  Sendmail 설치

apt-get install sendmail  (Ubuntu , Debian 계열)
yum install sendmail (RedHat 계열)

2. sendmail.mc 설정
divert(-1)dnl
dnl #
dnl # This is the sendmail macro config file for m4. If you make changes to
dnl # /etc/mail/sendmail.mc, you will need to regenerate the
dnl # /etc/mail/sendmail.cf file by confirming that the sendmail-cf package is
dnl # installed and then performing a
dnl #
dnl #     make -C /etc/mail
dnl #
include(`/usr/share/sendmail-cf/m4/cf.m4')dnl
VERSIONID(`setup for linux')dnl
OSTYPE(`linux')dnl
---- 중간 생략 : 아래 부분에 추가하는 것임 -------
dnl MASQUERADE_DOMAIN(mydomain.lan)dnl
dnl MAILER(cyrusv2)dnl

define(`SMART_HOST',`smtp.gmail.com')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
FEATURE(`authinfo',`hash /etc/mail/auth/client-info')dnl
define(`CERT_DIR', `MAIL_SETTINGS_DIR`'certs')
define(`confCACERT_PATH', `CERT_DIR')
define(`confCACERT', `CERT_DIR/CAcert.pem')
define(`confSERVER_CERT', `CERT_DIR/mycert.pem')
define(`confSERVER_KEY', `CERT_DIR/mykey.pem')
define(`confCLIENT_CERT', `CERT_DIR/mycert.pem')
define(`confCLIENT_KEY', `CERT_DIR/mykey.pem')

MAILER(smtp)dnl
MAILER(procmail)dnl


밝은색으로 표시된 부분이 추가된 부분이다. 저장을 한다.

3. 인증 설정
Sendmail 을 이용한 Gamil 접속이기 때문에 계정 인증 설정을 해주어야 한다.
# mkdir /etc/mail/auth
# vi /etc/mail/auth/client-info

-- 아래 내용을 추가한후 저장
AuthInfo:smtp.gmail.com "U:root" "I:[Gmail아이디]@gmail.com" "P:[Gmail비밀번호]"

4. 최종셋팅 (php.ini 포함)

-- 인증 파일의 hashdb 를 생성한다.
# makemap hash client-info < client-info
-- 인증파일경로의 퍼미션을 설정한다.
# chmod 700 /etc/mail/auth
# chmod 600 /etc/mail/auth/*

-- 인증을 위한 키를 만드는 부분
# mkdir /etc/mail/certs
# cd /etc/mail/certs
# openssl dsaparam 1024 -out dsa1024 -out dsa1024.pem

-- OpenSSL 개인키를 만드는 부분이다.
# openssl req -x509 -nodes -days 3650 -newkey dsa:dsa1024.pem -out /etc/mail/certs/mycert.pem -keyout /etc/mail/certs/mykey.pem
# ln -s /etc/mail/certs/mycert.pem /etc/mail/certs/CAcert.pem
-- OpenSSL 공개키를 만드는 부분이다.
# openssl req -x509 -new -days 3650 -key /etc/mail/certs/mykey.pem -out /etc/mail/certs/mycert.pem
-- 권한 설정
# chmod 700 /etc/mail/certs
# chmod 600 /etc/mail/certs/*
# cd /etc/mail
# make
-- 이때 일부 시스템에서는 sendmail.cf 가 없다는 메세지가 나오며 진행이 안될때가 있다. 그럴때는 yum install sendmail-cf , apt-get install sendmail-cf 를 진행하여 설치를 해준다.
# /etc/init.d/sendmail start
-- php.ini 설정
sendmail_path = /usr/sbin/sendmail -t

5. 테스트

	define('CRLF', "\r\n");
	$to      = 'lovelgw3@naver.com';	// 보낼 주소
	$subject = '=?UTF-8?B?' . base64_encode('Gmail 을 이용한 Sendmail') . '?=';	// 제목
	$strMessge = '이 메일은 Gmail 을 이용하여 보낸 메일입니다. ';	// 내용
	$message = chunk_split(base64_encode($strMessge));	// 메세지
	// 헤더 설정
	$headers = 'From: lovelgw@gmail.com' . CRLF .
			'Reply-To: lovelgw@gmail.com' . CRLF .
			'MIME-Version: 1.0' . CRLF .
			'Content-type: text/html; charset=utf/8' . CRLF .
			'Content-Transfer-Encoding: base64' . CRLF;
	// 메일 보내기
	mail($to, $subject, $message, $headers);

네이버로 보낸 메일 확인
사용자 삽입 이미지
다음으로 보낸 메일 확인
사용자 삽입 이미지

"Linux" 카테고리의 다른 글