ServersMan@VPS でメール運用


せっかくのVPSなので、独自ドメイン + VPSを使ったメール運用をまとめてみました。

  • ドメイン管理は、Value Domain (そのうちDTIドメイン管理のもUPしたい)
  • メールサーバ(送信、受信)は、ServersMan@VPS
  • MTA(メール転送エージェント。メールを配る) は、Postfix
  • MDA(メール配送エージェント。メールを受け取る)は、Dovecot
  • クライアント <-> メールサーバ間の通信は、OpenSSLで暗号化
    ※ メールサーバ <-> メールサーバ間は暗号化されるわけじゃないので注意。
    ※ よい子は、メール本文にパスワードなんて書いて送っちゃいけないZO☆

  • メール送信は、SMTP Auth(メール送信ユーザ認証)
  • アカウント管理は、システムアカウントと共通
  • パスワードの暗号化は、アカウント管理をシステムアカウント共通にするため、なし (そのためのSSLってことで)

目次

独自ドメイン

1. mxレコードの設定

証明書

1. 証明書の準備(オレオレ証明書)

SASL(認証機構)

1. SASLのインストール
2. 設定

Postfix

1. Postfixインストール + 設定
2. Postfix起動
3. 動作確認

Dovecot

1. メール保存場所の設定
2. Dovecot インストール + 設定
3. Dovecot 起動
4. 動作確認

運用

1. ユーザの追加
2. メール転送設定

mxレコードの設定

Value Domain ではこんな感じで設定しました。

mx mail.temog.info. 10
a mail ServersMan@VPSのIPアドレス

証明書の準備(オレオレ証明書)

こちらの記事で紹介してます。

SASLのインストール

yum install cyrus-sasl-md5 cyrus-sasl-plain

設定

システムアカウントと共通で運用する場合は以下の設定。

vi /etc/sysconfig/saslauthd
MECH=shadow

リブート

/etc/init.d/saslauthd restart

自動起動設定

chkconfig saslauthd on

Postfixインストール + 設定

インストール

yum install postfix

設定

vi /etc/postfix/main.cf

#myhostname = host.domain.tld
#myhostname = virtual.domain.tld
myhostname = mail.temog.info ← 追加

#mydomain = domain.tld
mydomain = temog.info ← 追加(自ドメイン名を指定)

#myorigin = $myhostname
myorigin = $mydomain  ← コメントアウト解除


inet_interfaces = all  ← コメントアウト解除
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
#inet_interfaces = localhost   ← コメントアウト

#mydestination = $myhostname, localhost.$mydomain, localhost    ← コメントアウト
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain     ← コメントアウト解除
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,

#home_mailbox = Mailbox
home_mailbox = Maildir/   ← コメントアウト解除

#smtpd_banner = $myhostname ESMTP $mail_name
#smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)
smtpd_banner = $myhostname ESMTP MyMTA(0.1)  ← 追加(セキュリティ対策)

# 最終行に以下を追記

# smtp auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions =
    permit_mynetworks
    permit_sasl_authenticated
    reject_unauth_destination

# 受信メールサイズ制限(10M)
message_size_limit = 10485760

# ssl setting
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/pki/tls/certs/server.pem
smtpd_tls_key_file = /etc/pki/tls/certs/server.key
smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_schache

以下の行のコメントアウトを削除

vi /etc/postfix/master.cf

smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
tlsmgr    unix  -       -       n       1000?   1       tlsmgr

Postfix起動

sendmail停止 + 自動起動解除

/etc/init.d/sendmail stop
chkconfig sendmail off

MTAの切り替え

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 
# ↑のように表示されたら 2 を入力してEnter

Postfixの起動

/etc/init.d/postfix start

自動起動設定

chkconfig postfix on

動作確認

telnet だと SSL使用のハードルが高いので、対応しているメールクライアントで試します。
以下は Thunderbird の例です。
※ Ubuntu版ですけど、他OSでもさほど変わらないと思います

・Thunderbirdを起動
・メニューから編集→アカウント設定

・アカウント操作
・メールアカウントを追加

・あなたの名前:任意
・メールアドレス:システムアカウント@独自ドメイン
・パスワード:システムアカウントのパスワード
・続行

・編集

・受信サーバ:IMAP or POP を選択
・詳細設定

・メニューから「サーバ設定」
・接続の保護:SSL/TLS
・OK

・作成
・宛先に自分で確認できるメールアドレスを指定
・件名、本文に何か入力
・送信

・セキュリティ例外を承認

・最初だけ送信エラーがでるので、「OK」で閉じる
・送信

・パスワードを入力
・OK

宛先に指定したメールアドレス宛にメールが届いているか確認。

メール保存場所

自分のメール保存場所作成

cd
mkdir -p Maildir/{new,cur,tmp}
chmod -R 700 Maildir/

新規ユーザ作成時に自動でメール保存場所作成

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

Dovecot インストール + 設定

yum install dovecot

設定

vi /etc/dovecot.conf

protocols = imap imaps pop3 pop3s
mail_location = maildir:~/Maildir

#コメントアウトを解除↓
ssl_disable = no

# コメントアウト解除 + 証明書のパス設定
ssl_cert_file = /etc/pki/tls/certs/server.pem
ssl_key_file = /etc/pki/tls/certs/server.key

※ 2010/09/21 protocolsprotoclos になってました(修正済)。Kamatoroさん突っ込み感謝!

設定反映

/etc/init.d/dovecot restart

Dovecot 起動

/etc/init.d/dovecot start

自動起動設定

chkconfig dovecot on

動作確認

とりあえず、受信を確認したいアカウントにメールを送信します。

例: アカウントは、test (/home/test)
ドメインは、temog.info
test@temog.info へメール送信

送信後、メールクライアントで受信してみます。
以下はThunderbirdの例です。※ 送信の確認で設定済みなことを前提にしてます。

・Thunderbird起動
・メニューから メールアカウント を選択
・受信

・セキュリティ例外を承認

・受信トレイを選択

メールが受信できていることを確認。

ユーザの追加

ユーザを追加する場合は、以下の手順から。

useradd -s /sbin/nologin 追加ユーザ
passwd 追加ユーザ
Changing password for user xxxxxx.
New UNIX password: パスワード
Retype new UNIX password: パスワード
passwd: all authentication tokens updated successfully.

メール転送

このファイルを編集します。

vi /etc/aliases

編集が終わったら設定の反映

newaliases

例:root宛のメールを特定ユーザに転送

root: ユーザ名

例:メールを残さず転送

ユーザ名: 転送先メールアドレス

例:メールを残して転送

ユーザ名: ユーザ名, 転送先メールアドレス

例:複数のアドレスに転送

ユーザ名: ユーザ名, 転送先メールアドレスA, 転送先メールアドレスB

8 Responses to ServersMan@VPS でメール運用

  1. Kamatoro より:

    “Dovecot インストール + 設定”

    “vi /etc/dovecot.conf”への記述で
    protoclos = imap imaps pop3 pop3s

    protocols = imap imaps pop3 pop3s
    タイプミスずら

  2. ても より:

    やっちまった Σ(゚Д゚)
    修正しました!指摘ありがとうございます

  3. skulljhon より:

    Postfixのmain.cfの設定で最終行
    “smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_schache”
    “smtpd_schache”ではなく”smtpd_scache”ではないでしょうか?

  4. ても より:

    >“smtpd_schache”ではなく”smtpd_scache”ではないでしょうか?

    自分の環境では smtpd_schache です (Version 2.3.3)

  5. SMTP、postfixへの切り替え(SeversMan@VPS) | IT実践記メモ より:

    […] http://temog.info/archives/vps/serversmanvps-%E3%81%A7%E3%83%A1%E3%83%BC%E3%83%AB%E9%81%8B%E7%94%A8.html […]

  6. kimura より:

    見ながらやらせて頂きました!
    情報ありがたいです。

  7. ても より:

    役に立ってよかったです

  8. […] ここのとおりに実施します。 […]

コメントを残す

メールアドレスが公開されることはありません。

Top