1. TOP
  2. プログラム一覧
  3. CentOS6.8 メールサーバー構築
スポンサーリンク
2017.04.19 Wed

CentOS6.8 メールサーバー構築

メールサーバー構築メモ
はじめに

レンタルサーバーだとあっさり使えるメール・・

自分で構築するとなると色々とセキュリティ面が心配になったり、私のような初心者には結構ハードルが高いです。

なので、一度作ってみて、ログを監視して経過観察する方向で構築したのでメモ。

 

・・まぁほぼ参考サイトの色んなところを取ってきただけなので、詳しい説明は参考サイトへどうぞ!

 

目的

・バーチャルユーザー
・465ポート(smtps)での通信

 

実行内容

◆参考サイト

https://blog.apar.jp/linux/3979/
http://oxynotes.com/?p=4684
https://centossrv.com/postfix.shtml
http://toriaezu-engineer.hatenablog.com/entry/2017/02/12/093509

 

◆ドメイン(DNS)の設定

TXT v=spf1 ip4:【サーバーのIP】/24 ~all
mail A 【サーバーのIP】
MX mail.【ドメイン】 50

 

◆Let’s Encryptで証明書取得

以前の記事にて紹介。
mail.【ドメイン】の証明書を使います。

 

◆メール用ユーザー作成

groupadd -g 10000 mailuser
useradd -u 10000 -g mailuser mailuser

 

◆メール保管場所作成

mkdir /var/spool/virtual
chown -R mailuser:mailuser /var/spool/virtual

 

◆postfix設定

yum -y install postfix

cp -p /etc/postfix/main.cf /etc/postfix/main.cf.bk
vi /etc/postfix/main.cf

myhostname = mail.【ドメイン】
mydomain = 【ドメイン】
 
inet_interfaces = all
#inet_interfaces = localhost
 
inet_protocols = all
 
#mydestination = $myhostname, localhost.$mydomain, localhost
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# virtualドメイン利用時は不要
mydestination = 
 
mynetworks = 192.168.0.0/24, 127.0.0.0/8
 
relay_domains = $mydestination
 
#home_mailbox = Mailbox
home_mailbox = Maildir/
 
smtpd_banner = $myhostname ESMTP unknown
 
 
########## TLS/SSL関連 ##########
# TLSを有効化
smtpd_use_tls = yes
 
# 宛先のメールサーバがTLSに対応していれば、通信を暗号化する
smtp_tls_security_level = may
 
# サーバ証明書と秘密鍵を指定
smtpd_tls_cert_file = /etc/letsencrypt/live/【ドメイン】/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/【ドメイン】/privkey.pem
 
# TLSログレベルの設定
# 0:出力しない 1:TLSハンドシェイクと証明書情報 2:TLSネゴシエーションの全て
smtpd_tls_loglevel = 1
 
# 暗号に関する情報を "Received:" メッセージヘッダに含める
smtpd_tls_received_header = yes
# 認証を通過したものはリレーを許可する(permit_sasl_authenticated)
smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination
 
smtpd_sasl_security_options = noanonymous
message_size_limit = 10485760
 
# 仮想的なユーザーが所属するドメイン。mydestinationと同様にカンマor半角スペース区切りで複数指定可能。
virtual_mailbox_domains = 【ドメイン】
# メールの保存先
virtual_mailbox_base = /var/spool/virtual
# 仮想的なユーザーとメールの保存先・ディレクトリがマッピングhash形式のファイル
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
# 保存するメールのOS上のオーナーとグループを指定
virtual_uid_maps = static:10000
virtual_gid_maps = static:10000

cp -p /etc/postfix/master.cf /etc/postfix/master.cf.bk
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

 

◆dovecot設定

yum -y install dovecot

・dovecot基本設定
cp -p /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.bk
vi /etc/dovecot/dovecot.conf

protocols = imap pop3 lmtp
 
listen = *

 

・平文で通信する imap と pop3 は無効
cp -p /etc/dovecot/conf.d/10-master.conf /etc/dovecot/conf.d/10-master.conf.bk
vi /etc/dovecot/conf.d/10-master.conf

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
 }
}

 

・暗号化設定
cp -p /etc/dovecot/conf.d/10-auth.conf /etc/dovecot/conf.d/10-auth.conf.bk
vi /etc/dovecot/conf.d/10-auth.conf

#disable_plaintext_auth = yes
disable_plaintext_auth = no
 
#auth_mechanisms = plain
#auth_mechanisms = plain login
auth_mechanisms = cram-md5 plain login
 
 
!include auth-passwdfile.conf.ext
!include auth-static.conf.ext

 

・SSL設定
cp -p /etc/dovecot/conf.d/10-ssl.conf /etc/dovecot/conf.d/10-ssl.conf.bk
vi /etc/dovecot/conf.d/10-ssl.conf

ssl = yes
 
#ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
#ssl_key = </etc/pki/dovecot/private/dovecot.pem
ssl_cert = </etc/letsencrypt/live/【ドメイン】/fullchain.pem
ssl_key = </etc/letsencrypt/live/【ドメイン】/privkey.pem

 

・メールボックスをバーチャルユーザーの配下に設定
cp -p /etc/dovecot/conf.d/10-mail.conf /etc/dovecot/conf.d/10-mail.conf.bk
vi /etc/dovecot/conf.d/10-mail.conf

mail_location = maildir:/var/spool/virtual/%d/%n

 

・dovecotユーザー設定(/etc/dovecot/passwdをユーザー設定として使用する)
cp -p /etc/dovecot/conf.d/auth-passwdfile.conf.ext /etc/dovecot/conf.d/auth-passwdfile.conf.ext.bk
vi /etc/dovecot/conf.d/auth-passwdfile.conf.ext

passdb {
 driver = passwd-file
 args = scheme=CRAM-MD5 username_format=%u /etc/dovecot/passwd
}
userdb {
 driver = passwd-file
 args = username_format=%u /etc/dovecot/passwd
}

cp -p /etc/dovecot/conf.d/auth-static.conf.ext /etc/dovecot/conf.d/auth-static.conf.ext.bk
vi /etc/dovecot/conf.d/auth-static.conf.ext

userdb {
 driver = static
 args = uid=10000 gid=10000 home=/var/spool/virtual/%d/%n
}

 

◆自動起動&起動

chkconfig postfix on
chkconfig dovecot on
chkconfig saslauthd on
/etc/init.d/postfix start
/etc/init.d/dovecot start
/etc/init.d/saslauthd start

 

◆メールエイリアスの変更

vi /etc/aliases

info: postmaster
↓
#info: postmaster
 
# root宛のメールの送信先を変更
#root: marc
root: 【自分のメールアドレス】

 

◆cyrus-saslインストール

yum -y install cyrus*

 

◆送信テスト

・telnetをテスト送信用にインストール
yum -y install telnet
http://ash.jp/net/telnet_smtp.htm

telnet localhost 25
 
HELO localhost
MAIL FROM: foo@【ドメイン】
RCPT TO: 【自分のメールアドレス】
DATA
From:root
To:【自分のメールアドレス】
This is test mail
from telnet
.
 
quit

 

◆ポート開放

smtps(465)ポートをあける、imaps(993)は必要であれば
vi /etc/sysconfig/iptables

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 465 -j ACCEPT
#-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 993 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 995 -j ACCEPT

/etc/init.d/iptables restart
 

◆権限変更

sasldb2のパーミッション・グループ変更
※初期時、一度設定
chmod 640 /etc/sasl2/
chgrp postfix /etc/sasl2/

 

ユーザー編集

◆受信ユーザー追加

・ユーザー追加
vi /etc/postfix/vmailbox

info@【ドメイン】 【ドメイン】/info/

・反映
postmap /etc/postfix/vmailbox

・パスワードのハッシュ値取得
doveadm pw

・ユーザーパスワード設定
vi /etc/dovecot/passwd

info@【ドメイン】:{CRAM-MD5}e02d374fde0dc75a17a557039a3a5338c7743304777dccd376f332bee68d2cf6:mailuser:mailuser::/var/spool/virtual/【ドメイン】/info

## フォーマット
## メールアドレス:パスワード:ユーザー:グループ:コメント(空でも可):メールパス

 

◆送信ユーザー追加

・一覧表示
sasldblistusers2

・追加
saslpasswd2 -u my_domain.jp -c username

・パスワード変更
saslpasswd2 -u my_domain.jp username

・削除
saslpasswd2 -u my_domain.jp -d username

 

まとめ

構築してみたものの・・色々不安なので、/var/log/maillogをしっかりチェックして悪質なログがないかチェックしたいと思います。。

特にinfo@はよく攻撃くるので簡単なパスワードにはしないようにしませう。

 

スポンサーリンク
コメント

* 以下の数式を完成させてください。