iyuichiの私的開発ログ

渋谷で働くWebエンジニアのログ. Java, Android, iOS, Docker, GCP, AWS, ゲーム開発

メールサーバをたてる

ConoHaのVPS上でメールサーバを構築します。

メールサーバには以下を使います

環境

  • メモリ 1GBプラン
  • CentOS release 6.4

Postfixの設定

Postfixはデフォルトでインストールされています。

postfix-2.6.6-2.2.el6_1.x86_64が入ってました。

では設定から入ります。

main.cfの設定

# Domainの設定など

myhostname = mail.monasan.info

mydomain = monasan.info

myorigin = $mydomain

inet_interfaces = all

inet_protocols = all

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

unknown_local_recipient_reject_code = 550

# MailBoxをMaildir形式に

home_mailbox = Maildir/

# SASL

smtpd_sasl_auth_enable = yes

broken_sasl_auth_clients = yes

smtpd_sasl_security_options = noanonymous

smtpd_sasl_application_name = smtpd

smtpd_sasl_local_domain = $mydomain

smtpd_client_restrictions = permit_mynetworks,

reject_rhsbl_client rhsbl.ahbl.org,

reject_rbl_client spamcop.net,

reject_rbl_client dynablock.wirehub.net,

reject_rbl_client sbl.spamhaus.org,

# reject_unknown_client, 受信できないメールがあったので仕方なく一旦はずした

permit

smtpd_recipient_restrictions = permit_mynetworks,

permit_sasl_authenticated,

reject_unauth_destination

smtpd_sender_restrictions = reject_unknown_sender_domain

message_size_limit = 10485760

# TLS

smtpd_tls_cert_file = /etc/pki/tls/certs/mail.crt

smtpd_tls_key_file = /etc/pki/tls/certs/mail.key

smtpd_use_tls = yes

サブミッションポートを有効にする

/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

Postfixの再起動

TLSを利用する場合は、以下に記載の「自己証明書の発行」を先に行ってください

service postfix restart

chkconfig postfix on

自己証明書の発行

/etc/pki/tls/certsで作業します。

openssl req -new -x509 -nodes -days 365 -out mail.crt -keyout mail.key

chmod 600 mail.key

セキュリティ証明書

自己証明書を利用しつつセキュリティ警告を出さなくしたい場合は以下を生成して

クライアントのPCなりに読み込ませます。(リスクを理解した上で自己責任でお願いします)

[bash]

openssl x509 -in mail.crt -out /var/www/html/mail.der -outform DER

[/bash]

Dovecotの設定

/etc/dovecot/dovecot.conf

[bash]

imappop3を有効にする

protocols = imap pop3

"*" listens in all IPv4 interfaces, "::" listens in all IPv6 interfaces.

これは変更しなくてOK

listen = *, ::

#クライアントからサーバがdovecotであることを隠す

login_greeting = dovecot Ready.

login_greeting = Ready.

[/bash]

/etc/dovecot/conf.d/10-auth.conf

[bash]

plain text 認証を許可

disable_plaintext_auth = no

loginを追記

auth_mechanisms = plain login

[/bash]

/etc/dovecot/conf.d/10-ssl.conf

[bash]

SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>

ssl = yes

さきほど生成した証明書のパスに書き換え

ssl_cert = </etc/pki/tls/certs/mail.crt

ssl_key = </etc/pki/tls/certs/mail.key

[/bash]

dovecotをインストールしたときに必要なファイルの生成がされいた様子。

これを使っても構築可能かと思いますが今回はオレオレ証明書を生成して構築しました。

[bash]

↓ デフォルトで設定ファイルに記載のこれらのファイルも生成されている

#ssl_cert = </etc/pki/dovecot/certs/dovecot.pem

#ssl_key = </etc/pki/dovecot/private/dovecot.pem

[/bash]

/etc/dovecot/conf.d/10-master.conf

ここで利用する予定のプロトコルとポートの設定を行います。

[bash]

imapの設定

service imap-login {

inet_listener imap {

port = 143

}

inet_listener imaps {

port = 993

ssl = yes

}

}

pop3の設定

service pop3-login {

inet_listener pop3 {

port = 110

}

inet_listener pop3s {

port = 995

ssl = yes

}

}

[/bash]

/etc/dovecot/conf.d/10-mail.conf

[bash]

Maildir形式を利用する

mail_location = maildir:~/Maildir

valid_chroot_dirs = /home

[/bash]

Dovecot起動

[bash]

service dovecot start

自動起動する場合

chkconfig dovecot on

[/bash]

ポートの解放

必要なポートを開ける

/etc/sysconfig/iptables

[bash]

smtp/submission

-A INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 587 -j ACCEPT

imap

-A INPUT -m state --state NEW -m tcp -p tcp --dport 143 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 993 -j ACCEPT

[/bash]

iptablesを再起動する

[bash]

service iptables restart

[/bash]

サーバの設定はひとまずここまで。

メールユーザの管理周りについてまた次の記事で記載します。

ではまた。