Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
10
Help us understand the problem. What is going on with this article?
@shohohoh

Amazon Linux on EC2にPostfix+Dovecotでメールサーバー構築

More than 5 years have passed since last update.

前提

ドメインはexample.com、メールサーバーはmail.example.com、メールアドレスはuser@example.com とする。
また、認証はLinuxのユーザ認証と同じユーザ名/パスワードを利用する。

インスタンスの準備

22(SSH)、25(SMTP)、465(SMTPS)、993(IMAPS)ポートを開けておく。

$ sudo yum update

postfix

▪️postfixのインストールのインストール

$ sudo yum -y install postfix

▪️postfixの設定

$ sudo vim /etc/postfix/main.cf

以下設定内容

# メールサーバのホスト名(mail.example.com)を設定
myhostname = mail.example.com
# メールアドレスで利用するドメイン(example.com)を設定
mydomain = example.com
# ローカルから配信されたメールは、example.comのメールであると認識させるための設定
myorigin = $mydomain
# 自ドメイン宛メールを受信できるようにする
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# 外部からのメール受信を許可するように変更
inet_interfaces = all
# VPC全体を信頼するネットワークとして設定
mynetworks = 192.168.0.0/24, 127.0.0.0/8
# メールの保存形式をメールディレクトリ形式に設定。 メールは宛先ユーザのホームディレクトリ(user@example.cpmならば、/home/user/)のMaildirディレクトリに保存される。
home_mailbox = Maildir/
# メールサーバを隠蔽する設定を追加
smtpd_banner = $myhostname ESMTP unknown
# 受信メールサイズの制限の設定を追加
message_size_limit = 10485760
# saslauthdを利用するための設定
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_sender_restrictions = reject_unknown_sender_domain
smtpd_client_restrictions = permit_mynetworks,reject_unknown_client,permit
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination

▪️submissionポートとsmptsポートを使うための設定

$ sudo vim /etc/postfix/master.cf

以下をコメントイン

submission inet n       -       n       -       -       smtpd
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING

▪️認証用のSMTP-Authのためのsaslauthdを起動。また、自動起動の設定も行う。

$ sudo service saslauthd start
$ sudo chkconfig saslauthd on

▪️デフォルトMTAの変更

$ sudo alternatives --config mta

※ 2を選択

▪️sendmailの停止

$ sudo /etc/rc.d/init.d/sendmail stop
$ sudo chkconfig sendmail off

▪️postfixの起動

$ sudo service postfix start
$ sudo chkconfig postfix on

dovecot

▪️dovecotのインストール

$ sudo yum -y install dovecot

▪️dovecotの設定

$ sudo vim /etc/dovecot/conf.d/10-mail.conf

以下追加

mail_location = maildir:~/Maildir

▪️受信の際の認証方法にloginを追加

$ sudo vim /etc/dovecot/conf.d/10-auth.conf

以下追加

auth_mechanisms = plain login

▪️ポートの設定

$ sudo vim /etc/dovecot/conf.d/10-master.conf

以下コメントイン、追記

service imap-login {
  inet_listener imap {
    port = 143
  }
  inet_listener imaps {
    port = 993
    ssl = yes
  }
}

service pop3-login {
  inet_listener pop3 {
    port = 110
  }
  inet_listener pop3s {
    port = 995
    ssl = yes
  }
}

service auth {
  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
}

その他の設定

▪️新規ユーザ追加時に、ホームディレクトリにMaildir形式のメールボックスを作成するようにする。

$ sudo mkdir -p /etc/skel/Maildir/{new,cur,tmp}
$ sudo chmod -R 700 /etc/skel/Maildir/

▪️ユーザーの作成

$ sudo useradd user
$ sudo passwd user

▪️証明書を指定

$ sudo vim /etc/postfix/main.cf

TLS を利用するための設定、証明書を指定する

smtpd_tls_cert_file = /etc/pki/tls/certs/server.crt
smtpd_tls_key_file = /etc/pki/tls/certs/server.key
smtpd_use_tls = yes

▪️SSLを使えるようにする

$ sudo vim /etc/dovecot/conf.d/10-ssl.conf
# (変更)
# SSL証明書
ssl_cert = </etc/pki/tls/certs/server.crt
ssl_key = </etc/pki/tls/certs/server.key
# (追記)
ssl = yes
ssl_key_password = "前述の証明書作成時のパスフレーズ"

▪️dovecotの起動

$ sudo service dovecot start
$ sudo chkconfig dovecot on

▪️postfixの再起動

$ sudo service postfix restart

おわりです。
うまくいかない場合は/var/log/maillogを確認してみてください。

Thunderbirdなどと連携できます。

10
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
shohohoh
anycloud
Web開発、アプリ開発など

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
10
Help us understand the problem. What is going on with this article?