MacPorts에서 Dovecot 및 Postfix를 설치하여 개발 환경에서 메일 전송 테스트

MacPorts에서 Dovecot 및 Postfix를 설치하여 개발 환경에서 메일 전송 테스트

2022-10-04 last update

7 minutes reading MacOSX postfix dovecot macports
서비스 개발 중에 메일 전송 테스트를하고 싶지만,
외부로 보내고 싶지 않거나 전송할 수없는 경우,
로컬에 메일 서버를 구축하는 것이 좋습니다.

Dovecot과 Postfix가 다루기 쉽기 때문에이 두 가지를 선택합니다.

Ports 업데이트



먼저 포트를 업데이트해 봅시다.
$ sudo port selfupdate

Dovecot



그럼 Dovecot에서.

Dovecot 설치


$ sudo port install dovecot2

Dovecot 설정



구성 파일을 example 디렉토리에서 복사
$ sudo cp /opt/local/share/doc/dovecot/example-config/dovecot.conf /opt/local/etc/dovecot
$ sudo cp /opt/local/share/doc/dovecot/example-config/conf.d /opt/local/etc/dovecot

conf.d에는 각종 인클루드 파일이 놓여 있으므로 그대로 복사해 두는 것이 좋습니다.

Dovecot을 설정합시다.

/opt/local/etc/dovecot/dovecot.conf
protocols = imap

#!include conf.d/*.conf
!include conf.d/10-master.conf
!include conf.d/10-auth.conf

#!include_try local.conf

ssl = no

mail_location = maildir:~/Maildir

프로토콜은 imap만으로 좋다고 생각합니다.
10-master.conf에는 기본 동작에 필요한 설정이 쓰여져 있으므로 포함.
10-auth.conf에서는 일반 텍스트로 로그인과 auth-system.conf.ext가 포함되어 있으므로 필요합니다.
ssl의 설정은 번거롭기 때문에 이용 불가로 해 버립니다.

pam 설정



이번 중요한 것이 pam의 설정입니다.

/opt/local/etc/dovecot/conf.d/auth-system.conf.ext
passdb {
  driver = pam
  # [session=yes] [setcred=yes] [failure_show_msg=yes] [max_requests=]
  # [cache_key=] []
  #args = dovecot
  args = login
}

디폴트에서는 dovecot용으로 유저를 등록하거나 하지 않으면 안됩니다만, 귀찮기 때문에 Mac의 유저를 그대로 사용합니다.
Postfox 측도 (표현은 정확하지 않지만) Mac 사용자로 메일 송수신하므로이 방법이 편리합니다.
args = login으로 mac의 인증 메커니즘을 사용합니다.

Dovecot 시작



그럼 시작합시다.
$ sudo port load dovecot2

최근 MacPorts는 "port load"에서 launchctl의 load와 start까지 해줍니다. (전부터 그랬어?)

이것으로 일단 imap 접속을 할 수 있게 되었습니다.

Postfix



그런 다음 Postfix를 넣을 수 있습니다.
표준에서도 Postfix는 설치되어 있지만,
Dovecot에 맞추어 개발 환경용으로는 MacPorts의 것을 사용합니다.

Postfix 설치


$ sudo port install postfix

alias 데이터베이스 작성



이대로 시작하면 alias 데이터베이스가 없다고 화내므로
$ cd /opt/local/etc/potfix
$ sudo newaliases

Maildir 형식 설정



dovecot에 맞게 Maildir 형식으로 처리하도록 합니다.

/opt/local/etc/potfix/main.cf
home_mailbox = Maildir/

sendmail 명령에 대한 링크



이대로 기동해도 PHP등에서 불려지는/usr/sbin/sendmail 커멘드는, 표준으로 인스톨 되고 있는 Postfix의 것(?)가 사용되어 버립니다.
그러면 SMTP 경유에서는 Maildir 형식에 들어갔는데 PHP 경유 등에서 sendmail 명령을 사용했을 때는 mbox 형식이 되거나 통일되지 않는 움직임이 됩니다.

명령을 대체해 봅시다.
$ sudo mv /usr/sbin/sendmail /usr/sbin/sendmail.org
$ sudo ln -s /opt/local/sbin/sendmail /usr/sbin/sendmail

Linux 디스트리라면 설정 파일로 전환을 할 수 있는데 MacPorts는/opt 부하만으로 대상을 한정하는 것이 기본이기 때문입니까.
port upgrade할 때마다 이것을 해야 하는 것이 귀찮다.

Postfix 시작



시작
$ sudo port load postfix

후기



이상으로 Mac상에서 PHP등을 사용한 메일 송신의 테스트 환경이 완성되었습니다.

잘 작동하지 않을 때는/var/log/maillog를 보면 알 수 있습니다.

그건 그렇고, 일반 메일에는 Mail.app을 사용하지만,
테스트 이메일에는 Thunderbird를 사용하여 이메일을 볼 수 있습니다.

검증 환경



Mac OS X 10.9.5 (Mavericks)
MacPorts 2.3.1
dovecot 2.2.13
postfix 2.11.1

보충



블로그의 전재입니다.
http://blog.genieframe.com/2011/09/26/macports에서 dovecot과 postfix를 설치하여 메일 환경 만들기 /