AWS上にメールサーバを立てる（Postfix＋Dovecot）

#メール使いますよ申請

##申請
https://portal.aws.amazon.com/gp/aws/html-forms-controller/contactus/ec2-email-limit-rdns-request

##申請が通ると以下のようなメールが
```
Hello,

We have configured the reverse DNS record(s) you requested. Your request was mapped for [IPアドレス]:[メールサーバFQDN]. Please note that propagation of this update to DNSBL services that Amazon works with may take up to a week.

If you also requested removal of the email sending limitations on your account, these have also been removed for any IPs and instances under your account.

Please let us know if you have any questions.

Thank you for your inquiry. Did I solve your problem? 
 
If yes, please click here: 
http://www.amazon.com/gp/help/survey?p=APN87EQ3BRVQS&k=hy 
 
If no, please click here: 
http://www.amazon.com/gp/help/survey?p=APN87EQ3BRVQS&k=hn

Best regards,


http://aws.amazon.com

---- Original message: ----

AWS AccountId			　　［AWSアカウントID］
AccountEmailAddress			［登録メールアドレス］
UseCaseDescription			send mail
ElasticIPAddress1			［メールサーバとしているEC2のElasticIP］
ElasticIPAddress2			 
ReverseDNSRecord1			［外部に登録したDNSレコード］
ReverseDNSRecord2			 

```

#EC2の設定
・EC2インスタンスを建てる（Amazon Linux）
・セキュリティグループの以下を設定
　　ssh、pop3、smtp

#ドメインの登録
EC2からの送信に関しては特にドメイン登録は不要ですが、受信時やメーラに設定する場合はDNS登録が必要です。
私はお名前.comで99円ドメイン買いましたｗ

#Postfixのインストール

インストールの実行
`$ sudo yum -y install postfix`

Postfixの設定
`$ sudo vi /etc/postfix/main.cf`

```main.cf
# ※設定箇所のみ記述します。

# メールサーバのホスト名を設定
myhostname = ［メールサーバのFQDN］

# メールアドレスで使用するドメインを設定
mydomain = ［ドメイン名］

# ローカルからメールを送信した際の認識設定
myorigin = $myhostname

# ローカル以外からもメールを受信するように設定
inet_interfaces = all

# メールサーバが自分宛のメールであると認識するためのドメイン名を設定
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

# 信頼するネットワークアドレス体系を設定
mynetworks = 10.0.0.0/16, 127.0.0.0/8

# メールを格納するフォルダの設定（ユーザのホーム配下のMaildirフォルダにメールを格納する記述）
home_mailbox = Maildir/

# メーラーからのSMTPを587番ポートでリレーする設定
relayhost = ［メールサーバのFQDN］:587

# SMTPサーバの認証設定
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_use_tls = yes
smtp_tls_security_level = encrypt
smtp_tls_note_starttls_offer = yes
smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt
smtpd_recipient_restrictions =
        permit_mynetworks,
        permit_sasl_authenticated,
        reject_unauth_destination

```

saslauthdの起動及び自動自動設定
`$ sudo service saslauthd start`
`$ sudo chkconfig saslauthd on`

メールを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
```

sendmailの停止
`$ sudo service sendmail stop`
`$ sudo chkconfig sendmail off`

Postfixの起動及び自動設定
`$ sudo service postfix start`
`$ sudo chkconfig postfix on`

ユーザの作成
`$ sudo useradd user`
`$ sudo passwd user`

メールディレクトリの作成
`$ sudo su - user`
`$ mkdir Maildir`
`$ exit`

#メール送信テスト
以下のように入力し、メールサーバ自身からメール送信テストをします。
失敗時は/var/log/maillogを確認します。

```
sendmail ［送信したいメールアドレス］
From:［送信元アドレス（上記手順だと　user@ホスト名＋ドメイン）］
To:［送信したいメールアドレス］
Subject:テスト送信←題名

テスト送信です。←本文

.　←「.」を打つと送信される
```

#Dovecotの設定

PCのメールソフトに構築したサーバを設定してメールをやり取りするには、Dovecotが必要なようです。
メーラでの状況
POP認証：OK
SMTP認証：OK
メール受信：OK
メール送信（自分のアドレス）：OK
メール送信（別サーバのアドレス）：NG・・・・

インストール
`$ sudo yum install -y dovecot`

保存先設定
`$ sudo vi /etc/dovecot/conf.d/10-mail.conf `

```10-mail.conf 
#保存場所をホームディレクトリ/Maildirに設定
mail_location = maildir:~/Maildir
```

認証設定
`$ sudo vi /etc/dovecot/conf.d/10-auth.conf `

```10-auth.conf
#メーラからの認証をはじいてたみたいなので、「no」に変更
disable_plaintext_auth = no

#loginを追加
auth_mechanisms = plain login
```

送信用設定
`$ sudo vi /etc/postfix/master.cf`

以下の1行のコメントアウト（#）をはずす

```master.cf
submission inet n       -       n       -       -       smtpd
```

認証情報の作成
`sudo vi /etc/postfix/sasl_passwd`

```/etc/postfix/sasl_passwd
[メールサーバ名のFQDN]:587 ［ユーザ名］:［パスワード］
```

パスワードDB生成
`$ sudo postmap hash:/etc/postfix/sasl_passwd`
`$ sudo chown root:root /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db`
`$ sudo chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db`

起動及び自動起動設定
`$ sudo service dovecot start`
`$ sudo chkconfig dovecot on`