Conohaでメールサーバーを立ててみる【CentOS Apache Postfix】
1,DNS設定
名称:mail.example.com
TYPE:A
値:IPアドレス
名称: example.com
TYPE :MX
Point先: mail.example.com
優 先:10
状 態:有効
2,Port開放
# vi /etc/sysconfig/iptables
//SMTP
-A INPUT -p tcp --dport 25 -j ACCEPT
//SMTPS
-A INPUT -p tcp --dport 465 -j ACCEPT
//IMAPS
-A INPUT -p tcp --dport 995 -j ACCEPT
//POP3S
-A INPUT -p tcp --dport 993 -j ACCEPT
//POP3
-A INPUT -p tcp --dport 110 -j ACCEPT
# service iptables restart
3,SSL可
//SSL証明書発行(LetsEncrypt利用)
cd /usr/local/
cd certbot/
./certbot-auto certonly --standalone -d mail.example.com -m MailAddress
※利用規約同意
※-m 連絡用アドレス
sudo service httpd stop
./certbot-auto certonly --standalone -d mail.example.com -m MailAddress
sudo service httpd start
sudo ls -1 /etc/letsencrypt/live/mail.example.com
//更新日確認
sudo openssl x509 -in /etc/letsencrypt/live/mail.example.com/fullchain.pem -noout -dates
//更新
cd /usr/local/
cd certbot/
./certbot-auto renew
4、Postfix設定(送信サーバー)
sudo cp -ip /etc/postfix/main.cf /etc/postfix/main.cf.org
sudo vi /etc/postfix/main.cf
#メールサーバーのHost名
myhostname = mail.example.com#メールサーバーのドメイン名
mydomain = example.com#メールアドレスをユーザー名@ドメイン名に変更
myorigin = $mydomain#全てのホストからのメールを受信
inet_interfaces = all# mydomain = で指定したドメイン宛のメールを受信する
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain# 存在しないメールアドレス(ユーザ)宛のメールの受信を拒否する
local_recipient_maps = proxy:unix:passwd.byname $alias_maps# 中継を許可する宛先ドメインを指定
relay_domains = $mydestinationhome_mailbox = Maildir/
smtpd_banner = $myhostname ESMTP
※以下追加
# VRFYコマンドの使用を禁止する
disable_vrfy_command = yesmailbox_size_limit = 1073741824
# 接続元の制限(スパムメール対策)
#当環境の場合(,)で区切るsmtpd_client_restrictions = check_client_access hash:/etc/postfix/access,reject_rbl_client zen.spamhaus.org,reject_rbl_client all.rbl.jp,reject_non_fqdn_sender,reject_unknown_sender_domain
# エンベロープアドレス(MAIL FROM)による制限(スパムメール対策)
#当環境の場合(,)で区切るsmtpd_sender_restrictions = reject_rhsbl_sender zen.spamhaus.org,reject_unknown_sender_domain
########## SMTP-Auth関連 ##########
# SASL認証を有効化
smtpd_sasl_auth_enable = yes
# Dovecot SASL ライブラリを指定
smtpd_sasl_type = dovecot# Dovecot SASL ライブラリの認証ソケットファイル /var/spool/postfix/ からの相対>パスで記述
smtpd_sasl_path = private/auth# 古いバージョンの AUTH コマンド (RFC 2554) を実装した SMTP クライアントとの相互
運用性を有効にする
broken_sasl_auth_clients = yessmtpd_sasl_local_domain = $myhostname
#当環境の場合(,)で区切る
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
########## TLS/SSL関連 ##########
# TLSを有効化
smtpd_use_tls = yes# 宛先のメールサーバがTLSに対応していれば、通信を暗号化する
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.example.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.example.com/privkey.pem# TLSログレベルの設定
# 0:出力しない 1:TLSハンドシェイクと証明書情報 2:TLSネゴシエーションの全て
smtpd_tls_loglevel = 1# 暗号に関する情報を "Received:" メッセージヘッダに含める
smtpd_tls_received_header = yes# 接続キャッシュファイルの指定
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache# キャッシュの保持時間の指定
smtpd_tls_session_cache_timeout = 3600s# 認証を通過したものはリレーを許可する(permit_sasl_authenticated)
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
sudo vi /etc/postfix/master.cf
#以下をコメントアウト
smtps inet n - n - - smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
ルックアップテーブルの作成
設定に誤りがないかチェック(なにも表示されなければOKです)
postfix check
Postfixの起動
service postfix start
自動起動の設定
chkconfig postfix
# chkconfig saslauthd on && service saslauthd start
Starting saslauthd: [ OK ]
# service postfix start
Starting postfix: [ OK ]
5,Dovecotインストール
sudo vi /etc/dovecot/dovecot.conf
sudo vi /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir
sudo vi /etc/dovecot/conf.d/10-master.conf
#平文で通信する imap と pop3 は「port = 0」を設定し無効に
service imap-login {
inet_listener imap {
#port = 143
↓
port = 0
}
inet_listener imaps {
#port = 993
#ssl = yes
↓
port = 993
ssl = yes
}
}service pop3-login {
inet_listener pop3 {
#port = 110
↓
port = 0
}
inet_listener pop3s {
#port = 995
#ssl = yes
↓
port = 995
ssl = yes
}
}#Dovecot SASL ライブラリの認証ソケットファイルを指定
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
sudo vi /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no
auth_mechanisms = plain login
SSL/TLSの有効化とサーバ証明書と秘密鍵を指定
sudo vi /etc/dovecot/conf.d/10-ssl.conf
ssl = yes
ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem
# ログの出力先を変更
sudo vi /etc/dovecot/conf.d/10-logging.conf
mkdir /var/log/dovecot
自動起動&&起動の設定
# chkconfig dovecot on && service dovecot start
認証ソケットファイルが作成されているのを確認
ls -F /var/spool/postfix/private/auth
---(下記表示があればOK)---/var/spool/postfix/private/auth =
6,mail User追加
sudo useradd -s /sbin/nologin user_name
sudo passwd user_name #パスワードを設定
デバグ
sudo mail user_name@example.com
Third Party Relay Check RBL.JP第三者中継チェック RBL.JP
7,SPF
DNS TXT
example.com. IN TXT "v=spf1 ip4:IPアドレス -all"
参考サイト
SSLメールサーバ構築メモ Let’s Encrypt+Postfix+Dovecot | あぱーブログ
https://www.conoha.jp/download/books/conoha-book-02-postfix.pdf
Postfixによる、セキュリティに配慮したメールサーバの構築方法 | OXY NOTES