서비스나 웹사이트를 테스트를 하다보면 사용자에게 메일이 발송되는지 확인해야 하는 경우가 있다. 또한 실제로 운영되는 서비스를 테스트 환경에 놓고 테스트 하다가 메일이 사용자에게 발송되어 버리는 경우가 생길 수 있다. 물론 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을 켜두면 해당 서버에서 발송되는 메일이 실제로는 발송되지 않고 모두 로컬에 저장되어 그 내용을 확인할 수 있다.