CI 묻고 답하기

제목 ci3, postfix로 메일 보낼 때 Return-Path를 바꾸고 싶습니다.
카테고리 CI 2, 3
글쓴이 골드잉여 작성시각 2017/09/08 20:20:27
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 18663   RSS

안녕하십니까.

회원 단체메일 송부하는 것과 관련하여, 도저히 답을 못 찾겠어서 포럼에 문의드립니다.

 

1. 먼저 상황 설명을 드리면, 제 소유 홈페이지가 아니기 때문에

단체 메일을 보낼 때 reply나 from은 홈페이지 관리 이메일(admin@business.com)주소로 하고 싶고,

반송되는 메일은 제가 관리하는 메일(abd@gmail.com)로 하고 싶습니다.

메일을 반송 받는 것은 헤더부분의 from이 아니고, return-path로 오는 것으로 알고 있습니다.

 

2. $this->mail->from('admin@business.com', '회사','abd@gmail.com');

로 하고 송부를 하면, print_debugger에서는 return-path가 제대로 있는데 (abd@gmail.com),

받은 메일(gmail의 경우) 원본을 확인해보면, from 앞에 적혀있는 메일(admin@business.com)로 바뀌어 있습니다.

 

3. 제 생각에는 ci 문제가 아니라면, 1) postfix 2) 메일을 받는 쪽, 둘 중에 하나에서 return-path를 변경한다고 생각했습니다.

 1) postfix 단에서 보내는 헤더를 check하는 방법을 찾아봤는데, 확인하는 방법을 정확히 모르겠어서 2)번 방법을 먼저 테스트했습니다.

 2) 메일을 받는 쪽에서 변경하는 것이 의심되어서 여러 메일을 확인해봤습니다.

    gmail : from에 있는 메일로 Return-Path 작성되어서 내용이 들어가 있음

   naver,daum : return-path 부분이 아예 사라져 있습니다.

 

4. 현재 postfix에서 header 나가는 것을 확인해야 명확히 어느부분에서 문제가 발생하는지 알 것 같은데, 확인 방법을 모르겠습니다.

  혹은 메일 업체에서 return-path를 원래 무시하는 것이 정책이라면, 보내는 것을 수정하는 것은 의미가 없을 것 같습니다.

  결론은 메일을 반송 받는 Return-path를 분리하고 싶은데 방법을 모르겠습니다.

 

5. 질문을 드리는 김에 추가로 질문이 있어서 같이 여쭙니다.

  현재 spf, dkim, dmarc를 회사의 메인 도메인으로 받아놓았습니다.

  이 주로를 return-path로 한다면, spf,dkim,dmarc 모두를 pass한 것으로 될까요?

  위에 테스트를 할 때, 헤더의 어느 도메인을 보고 검증을 하는 것인지를 모르겠습니다.

 

부분적인 힌트라도 알고 계시다면 댓글 부탁드립니다.

감사합니다.

 

 

 다음글 ci3 / php7.1 session 오류? (3)
 이전글 ssh over mysql connect (2)

댓글

변종원(웅파) / 2017/09/09 08:08:05 / 추천 0

매뉴얼 보시면 return_path는  Optional email address to redirect undelivered e-mail to 라고 되어 있습니다

원하시는 용도로 사용되는게 아니라 배달되지 않은 메일이 리턴되는 주소입니다. 이메일 라이브러리 열어보시면

ci에서 변형을 하는지 메일 수신하는 곳에서 변형을 하는지 알 수 있습니다.

그리고 3th party library 이용하는 것도 고려해보세요. ci 메일 발송은 아주 기본만 있는 것입니다.

골드잉여 / 2017/09/09 12:44:23 / 추천 0

@웅파/ 답변 감사합니다. codeigniter에서 나가는 것 까지는 return-path가 제가 원하는 대로 분리된 주소로 나가는 것을 print_debugger()함수를 통해서 확인하였습니다.

postfix 아니면 메일 수신하는 곳에서 변경을 하는 것 같습니다.

(생각해보니... 그러면 codeigniter질문이 아니라, 개발 Q&A에 올렸었나 싶습니다 ;;)

postfix에서 어떠한 식으로 헤더가 발송되는지 확인을 해보고 싶은데,

아직 방법을 찾지 못했습니다. 좀 더 찾아봐야 할 것 같습니다.

third party library는 생각도 못하고 있었는데, 위 방법으로 해결이 안 되면 고민해봐야 할 것 같습니다.

골드잉여 / 2017/09/10 13:42:37 / 추천 0

확실한 정답인지 모르겠지만, 위에 언급되었던 문제가 어느정도 해결된 것 같습니다.

혹시 동일한 문제로 고생하시는 분이 있을까봐 추가 댓글 남깁니다.

1.  코드이그나이터에서 Return-Path로 정상적으로 아웃풋이 생성되지만, postfix에서 이것을 from에 있는 값으로 변경하여 내보내는 것으로 추정됨 (postfix 메세지는 저장되지 않기 때문에, 따로 저장하여 디버깅하는 법이 있다고 하는데 방법을 명확히 이해하지 못해서 header를 직접 확인은 못함)

2. Return-Path는 envelope sender와 같은 의미로, 편지봉투에 쓰여있는 주소에 해당함. 이것을 아래와 같이 변경할 수 있음. envelope sender를 정규식을 이용해 변경할 수 있음

https://serverfault.com/questions/533912/how-do-i-change-the-envelope-from-in-postfix

3. spf, dkim, dmarc 인증은 return-path(envelope sender)에 적힌 email의 도메인을 기준으로 확인하는 것 같음.