개발 Q&A

제목 aws ses smtp 를 사용하여 CI에서 이메일을 보내면 Permission denied 오류가 납니다.
카테고리 서버
글쓴이 데카르트 작성시각 2018/08/03 16:01:30
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 10947   RSS

안녕하세요.

aws route53에서 도메인을 구매하여 ses를 통해 외부로 이메일을 보낼 수 있게 만드려고합니다.

 

< 작업환경 >

# Route53(도메인 + https, SSL 인증) -> ELB -> EC2 + RDS + SES

- 서버 : aws EC2(서울리전) 리눅스 CentOS7 / Apache 2.4.6 / PHP 5.4.16 (CI)

- DB : aws RDS(서울리전) / mariaDB 연동

- 이메일 : aws SES(미국동부 버지니아 북부) / 도메인으로 이메일 발송

 

<Controller>

<SES SMTP 세팅>

Server Name:

email-smtp.us-east-1.amazonaws.com

Port: 25, 465 or 587
Use Transport Layer Security (TLS): Yes
Authentication: Your SMTP credentials - see below.

 

<오류 코드>

A PHP Error was encountered

Severity: Warning

Message: fsockopen(): unable to connect to ssl://email-smtp.us-east-1.amazonaws.com:465 (Permission denied)

Filename: libraries/Email.php

Line Number: 2055

Backtrace:

File: /var/www/html/application/controllers/UserAjax.phpLine: 178Function: send

File: /var/www/html/index.phpLine: 315Function: require_once

 

<현재 상황>

- AWS SES : LIMIT 제한 요청하여 풀렸습니다. AWS SES 브라우져에서 테스트 이메일 보내기하면 외부 이메일로 보내집니다.

- 그런데 CI에서 이메일을 보내려고 하면 위 처럼 오류가 발생합니다.

   구매한 도메인에서 도메인으로 메일을 보내보아도 마찬가지 오류가 납니다.

- 처음 설정은 TLS 였는데 SSL로 변경하여 시도해보았고 포트도 25 / 465 / 587 모두 시도해보았습니다.

- EC2 에서 인바운드(inbound) 포트도 25, 587 열어서 해보았지만 안됐습니다.

- fsockopen() 오류때문에 httpd_can_network_connect=off 에서 ON으로도 바꿔서 해봤지만 되지 않아 다시 off로 해놨습니다.

 

현재 AWS를 이용하여 서버 구축하고 있습니다.

그런데 이메일에서 몇 일 동안 구글링을 하고 있는데 도저히 해결을 못하고 있습니다.

SES는 처음 써보는거라서 막막하여 이렇게 질문 드립니다.

웅파님을 비롯한 선배님들 도와주세요. ㅠ_ㅠ

 

 

 

 다음글 파일 업로드 이렇게 하는것 아닌가요? (3)
 이전글 phpstorm 에서 서버와 싱크를 맞출 때 어떻게 하... (2)

댓글

kaido / 2018/08/03 16:22:00 / 추천 0

ses는 사용자 인증 컨펌을 한번 받아야 하는걸로 기억합니다.

aws에서 test 는 바로 되는데, 끌어다 쓸려면 인증요청을 한번 받아야 합니다.

 

데카르트 / 2018/08/03 16:24:51 / 추천 0

다시 구글링하다가 해결했습니다.;;;

제가 질문하려고 생각을 정리하다가 문제점을 찾은것 같습니다.

아무래도 CentOS의 sendmail 에서 권한을 수정해줘야 할 것 같다는 생각이 들어 구글링하던중

# setsebool httpd_can_sendmail 1

명령어로 바꿔줬더니 문제가 해결되었습니다. ^^

이 문제로 고통받는 다른 분이 더 없길 바랍니다. ㅠㅠ kaido 님 답변 감사드립니다. ^^

변종원(웅파) / 2018/08/03 18:29:49 / 추천 0
selinux가 켜져있으면 보안관련 셋팅을 좀 빡시게(?) 합니다.