EC2にメールサーバを立ててお名前.comで取得したドメインでメールを受信できるようにするまで
2018-02-07お名前.comで取得したドメインでメールを送受信(主に受信)したいと思ってEC2にpostfixをインストールしたのでその時のメモです。
これから出てくる example.com
を、設定するドメインに置き換えて読んで下さい。
環境
- EC2 AmazonLinux
設定に際して、次の値が必要になるので、先にAWSのマネジメントコンソールで調べておきます。
- 対象のEC2インスタンスののIPアドレス
- 対象のEC2インスタンスが属しているVPCのIPアドレス (例:10.0.0.0/16)
事前準備 お名前.com ドメインNavi
まずDNSの設定をします。
お名前.comのドメインNaviから、以下のDNSレコードを設定します。
ホスト名 | TYPE | VALUE | 優先 |
---|---|---|---|
example.com | A | EC2のIPアドレス | |
mail.example.com | A | EC2のIPアドレス | |
example.com | MX | mail.example.com | 10 |
TTLは初期値(3600)のままでいいです。
DNSの反映には時間がかかるので、一番最初にやっておきます。
事前準備 AWSマネジメントコンソール
続いて、AWSのマネジメントコンソールから、EC2のセキュリティグループの設定を変更します。
対象のEC2に設定されているセキュリティグループのインバウンドルールに、下記を追加します。
タイプ | ポート範囲 | ソース |
---|---|---|
IMAP | 143 | ::0/, 0.0.0.0/0 |
SMTP | 25 | ::0/, 0.0.0.0/0 |
POP3 | 110 | ::0/, 0.0.0.0/0 |
postfixのインストールと設定ファイルの変更
ここからはSSHでEC2インスタンスにログインして操作します。
postfixをインストールします。
$ sudo yum install -y postfix
このあと以下の3つの設定ファイルを書き換えるので、念のためオリジナルをコピーしておきます。
- /etc/postfix/main.cf
- /etc/postfix/master.cf
- /etc/sasl2/smtpd.conf
$ sudo cp /etc/postfix/main.cf /etc/postfix/main.cf.org
$ sudo cp /etc/postfix/master.cf /etc/postfix/master.cf.org
$ sudo cp /etc/postfix/smtpd.cf /etc/postfix/smtpd.cf.org
$ diff /etc/postfix/main.cf.org /etc/postfix/main.cf
76c76
< #myhostname = virtual.domain.tld
---
> myhostname = mail.example.com
83c83
< #mydomain = domain.tld
---
> mydomain = example.com
99c99
< #myorigin = $mydomain
---
> myorigin = $mydomain
113c113
< #inet_interfaces = all
---
> inet_interfaces = all
116c116
< inet_interfaces = localhost
---
> #inet_interfaces = localhost
166c166
< #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
---
> mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
264c264
< #mynetworks = 168.100.189.0/28, 127.0.0.0/8
---
> mynetworks = 10.0.0.0/16, 127.0.0.0/8 ## 10.0.0.0/16 は事前にメモしておいたVPCのIPアドレス
419c419
< #home_mailbox = Maildir/
---
> home_mailbox = Maildir/
676a677,684
>
> ## add setting
> smtpd_sasl_auth_enable = yes
> smtpd_sasl_local_domain = $myhostname
> smtpd_recipient_restrictions =
> permit_mynetworks
> permit_sasl_authenticated
> reject_unauth_destination
$ diff /etc/postfix/master.cf.org /etc/postfix/master.cf
12c12
< #submission inet n - n - - smtpd
---
> submission inet n - n - - smtpd
14,15c14,15
< # -o smtpd_sasl_auth_enable=yes
< # -o smtpd_client_restrictions=permit_sasl_authenticated,reject
---
> -o smtpd_sasl_auth_enable=yes
> -o smtpd_client_restrictions=permit_sasl_authenticated,reject
$ diff /etc/sasl2/smtpd.conf.org /etc/sasl2/smtpd.conf
1c1
< pwcheck_method: saslauthd
---
> pwcheck_method: auxprop
sendmailの停止、postfixとsaslauthdの起動設定
デフォルトでは sendmail が起動しているので、停止します。また、自動起動の設定も解除します。
$ sudo service sendmail stop
Shutting down sendmail: [ OK ]
$ sudo chkconfig sendmail off
続いて、MTA(Mail Transfer Agent)を sendmail から postfix に変更します。
$ sudo alternatives --config mta
There are 2 programs which provide 'mta'.
Selection Command
-----------------------------------------------
+ 1 /usr/sbin/sendmail.sendmail
2 /usr/sbin/sendmail.postfix
Enter to keep the current selection[+], or type selection number: ;2 を入力してEnterキーを押します
postfix を起動します。自動起動設定もします。
$ sudo chkconfig --add postfix
$ sudo chkconfig postfix on
$ sudo service postfix start
Starting postfix: [ OK ]
SALS認証のための saslauthd を起動します。自動起動設定もします。
$ sudo chkconfig saslauthd on
$ sudo service saslauthd start
Starting saslauthd: [ OK ]
ユーザの作成
ユーザとは、hogehoge@example.com
というメールアドレスを作ったときの hogehoge
にあたる部分です。
ユーザの作成、パスワード設定
$ sudo useradd hogehoge
$ sudo passwd hogehoge
Changing password for user hogehoge.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
作ったユーザになってメールディレクトリを作成します。
$ su - hogehoge
Password:
Last login: Thu Jan 24 23:04:06 JST 2018 on pts/0
$ mkdir Maildir
これで受信設定は完了です。
hogehoge@example.com
宛にメールを送ると作成した Maildir
の下に new
ディレクトリが作成され、そこに 1234567890.abcdefghABCD123456.ip-XX-XXX-XXX-XXX
といったファイルが生成されます。
これがメールの内容になりますが、件名や本文はbase64エンコードされているので、読むにはbase64デコードする必要があります。
comments powered by Disqus