Postfix로 서버에서 발송되는 메일을 리다이렉트하기

2014년 7월 15일

서비스나 웹사이트를 테스트를 하다보면 사용자에게 메일이 발송되는지 확인해야 하는 경우가 있다. 또한 실제로 운영되는 서비스를 테스트 환경에 놓고 테스트 하다가 메일이 사용자에게 발송되어 버리는 경우가 생길 수 있다. 물론 sendmail을 꺼두는 것도 방법이긴 하지만… Postfix를 사용하고 있다면 서버에서 발송되는 모든 메일을 하나의 메일 주소로 수신하게 설정할 수 있다. (Postfix가 서버에 없다면 설치하자.)

먼저 /etc/postfix/recipient_canonical_map 파일을 다음과 같이 작성한다.

/./    dev@haruair.com

이 맵핑 파일에서 앞부분은 정규표현식이며 수신자가 정규표현식에 해당하면 뒷부분의 이메일로 리다이렉트 하도록 처리해준다. 정규표현식으로 여러 조건을 만들어 여러 이메일로 리다이렉트 할 수도 있다. 해당 파일을 저장하고 나서 /etc/postfix/main.cf를 열어 맵핑한 파일을 참조하도록 다음 설정을 추가한다.

recipient_canonical_classes = envelope_recipient
recipient_canonical_maps = regexp:/etc/postfix/recipient_canonical_map

위 설정에서 recipient_canonical_classes는 기본값이 envelope_recipient, header_recipient인데 header_recipient는 수신자를 해당 리다이렉트 되는 이메일로 치환해버리기 때문에 확인하는데 불편함이 있어서 위와 같이 envelope_recipient만 설정한다. 두번째는 보는 것과 같이 맵파일의 경로를 설정해준다.

수정을 완료하고 저장한 후 postfix 설정을 다시 불러오면 모든 과정이 끝난다.

$ postfix reload

postfix 설정에 관한 자세한 내용은 postfix 문서에서 확인할 수 있다.

참고로 Windows에서는 Papercut을 켜두면 해당 서버에서 발송되는 메일이 실제로는 발송되지 않고 모두 로컬에 저장되어 그 내용을 확인할 수 있다.