【簡易版】Postfix_Dovecot_SASL2でメールサーバー構築

2015/03/08[公開]

 自宅PCサーバーをリプレースしたので、メールサーバーの設定をやり直した備忘録です。Debianの最大の利点である初心者にやさしい部分を利用して、デフォルトでいける所は端折っていく方針ですので、Debian(もしくはUbuntu)じゃないと通用しない部分多数と思われます。(ホントは細かい所は理解出来ないのです。)といっても相当ややこしい設定です。簡易版と題名に付けましたが、かなり長い記事になりました。

 利用OS:Debian GNU/Linux Wheezy 7.8

【2015/05/17追記】

 この記事はDebian7.8 Wheezyでのみ設定できた内容です。Debian8.0 Jessieでは別の設定方法で利用しています。

Debian8.0 JessieでPostfix + DovecotSASLメールサーバー構築

スポンサー リンク

基本方針

 Debianには電子メールを利用するためのシステムとしてExim4が標準でインストールされていますが、情報が少ないうえに2年近くバージョンが更新されていないようです。お察ししろということでしょうか。ネットでググると情報豊富で更新も頻繁なpostfixとdovecotを利用するのがよさそうです。さらに外部とメールを送受信するために必須のsmtp-authにはsasl2を利用します。

考慮した項目

  1. mail-box形式ではなく、Maildir形式にする
  2. OSのユーザー名とパスワードでsmtp-authをする
  3. TLS/SSLで自分のとこだけでもセキュア通信にする

考慮してない項目

  1. ルーターのポート解放設定(ウチの環境はルーターを使ってないので)
  2. ちゃんとした証明書を使う(今回は仮の証明書を使います。)
  3. 内部ネットワーク環境(ウチはサーバーと自宅LANのルーターを分離しているので)
  4. 上位ISPメールサーバーへのリレー設定(ウチでは不要だったので。)

事前準備的なもの

DNSサーバー設定

 MXレコード設定など設定済みの前提です。私はお名前.comのDNS設定サービスを利用しているのでログインして設定するだけです。今回はメールサーバー名としてmail.ikt-s.comを使用するとしています。

 ファイアウォールiptables

 ファイアウォールのiptablesにメールサーバー関係のポートの通信許可を設定しておきます。今回はポート25 (smtp)、110 (pop3)、465 (ssmpt)、993 (imaps)、995(pop3s) を許可しました。必要であれば143 (imap2) と587 (submission) も許可します。

インストール

 aptitudeでまとめてインストールします。まずはroot権限になってからアップデートをかけます。

aptitude update
aptitude upgrade

  今回利用するものを、まとめてインストールします。

aptitude install dovecot-imapd dovecot-pop3d postfix sasl2-bin libsasl2-modules

  標準でインストールされているexim4を削除するか聞いてくるので「y」で進みます。

     以下のパッケージを削除する:
1)     exim4
2)     exim4-base
3)     exim4-config
4)     exim4-daemon-light

  Debianは親切です。

postfix1

 固定グローバルIPで外部にメール送受信するなら、ここで「インターネットサイト」を選択すると、ある程度適切な設定にしてくれます。

postfix2

 説明の通り、ドメイン名を入れます。

 以上でインストールは完了です。

SASL設定

 ここはDebian独自の作法があるようで、debian wiki をまるまる参考にします。

nano /etc/postfix/sasl/smtpd.conf

  /etc/postfix/sasl/smtpd.confファイルを新規作成します。

pwcheck_method: saslauthd
mech_list: PLAIN LOGIN

  ファイルの中身をこのようにコピペして保存します。

cp /etc/default/saslauthd /etc/default/saslauthd-postfix

 saslauthdファイルを別名で複製して、複製したsaslauthd-postfixファイルの方を編集します。

START=yes
DESC="SASL Auth. Daemon for Postfix"
NAME="saslauthd-postf" 
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"

  上記のように4行それぞれ、このように編集して保存します。

rm -rf /run/saslauthd
ln -s /var/spool/postfix/var/run/saslauthd /run/saslauthd
dpkg-statoverride --add root sasl 710 /var/spool/postfix/var/run/saslauthd

 Debianではchrootで動いているpostfixにsaslのファイルを対応させるのにひと手間必要みたいなので、上記の通りコマンドを入れていきます。

/etc/init.d/saslauthd restart

  SASLを再起動して

testsaslauthd -u "user" -p "password"

 既存のDebianのユーザー名とパスワードでテストして”Success”と出たら、SASLの設定は完了です。

Postfix設定

  postfixの設定は2つのファイル/etc/postfix/main.cf と/etc/postfix/master.cfを編集します。

/etc/postfix/main.cfの編集

 30行目以降をいろいろ編集します。

mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
#mailbox_command = procmail -a "$EXTENSION"
#mailbox_size_limit = 0
home_mailbox = Maildir/

 mailboxの設定2行をコメントアウト、Maildirの設定を一行追加します。

smtpd_sasl_local_domain=ikt-s.com
smtpd_sasl_auth_enable=yes
smtpd_recipient_restrictions=
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_unauth_destination
smtpd_sasl_security_options=noanonymous

 smtp-authの設定を追加します。ドメイン名の部分は適時変更してください。

broken_sasl_auth_clients = yes

 古いOutlookに対応させます。(任意で追加)

smtpd_banner = $myhostname ESMTP unknown

 postfixを使っていることを隠します。(任意で追加)

message_size_limit = 10485760

メール一通のサイズ上限を設定します。(任意で追加)

注意:

myhostname =  はDebianが自動で設定したこのマシンのホスト名のまま変更しません。Postfixのインストール時に作成されたsnakeoil証明書のホスト名にマシンのホスト名が使われているので合わせておいた方が良さそうです。ちゃんとした証明書をmail.ドメイン名で取得した場合は、mail.ドメイン名にしたほうがいいかもしれません。もしくは別に気にする必要も無いかもしれません。

今回変更したのは以上です、保存してmain.cfの設定は完了です。

/etc/postfix/master.cfの編集

 ここでsubmissionポートや、smtpsを使う設定ができます。今回はsmtpsに対応する設定をします。#コメントを外すだけです。

# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       -       -       -       smtpd
#smtp      inet  n       -       -       -       1       postscreen
#smtpd     pass  -       -       -       -       -       smtpd
#dnsblog   unix  -       -       -       -       0       dnsblog
#tlsproxy  unix  -       -       -       -       0       tlsproxy
#submission inet n       -       -       -       -       smtpd
#  -o syslog_name=postfix/submission
#  -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       -       -       -       -       smtpd
#  -o syslog_name=postfix/smtps
#  -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
#628       inet  n       -       -       -       -       qmqpd

 #を外していくだけで設定ができます。

# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       -       -       -       smtpd
#smtp      inet  n       -       -       -       1       postscreen
#smtpd     pass  -       -       -       -       -       smtpd
#dnsblog   unix  -       -       -       -       0       dnsblog
#tlsproxy  unix  -       -       -       -       0       tlsproxy
#submission inet n       -       -       -       -       smtpd
#  -o syslog_name=postfix/submission
#  -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       -       -       -       -       smtpd
  -o syslog_name=postfix/smtps
  -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
#628       inet  n       -       -       -       -       qmqpd

 smtps(ポート465)を利用する場合は上記の6行分の#コメントを外します。

 submission(ポート587)を利用するなら、その上あたりを外します。ポート465はtls/ssl必須ですが、ポート587の場合はオプション部分の#を残すとtls/ssl無しの設定もできるようです。

 これでpostfixの設定が完了です。postfixを再起動します。

/etc/init.d/postfix restart

Dovecot設定

 dovecotの設定ですが、今回は設定変更なしで済みました。ほっとしますね。

 念のため確認しておくのが一箇所/etc/dovecot/conf.d/10-mail.confの30行目

mail_location = maildir:~/Maildir

MailboxではなくMaildirになっていればOKです。

念のため再起動しておきます。

/etc/init.d/dovecot restart

ユーザーディレクトリ作成

 メール保存をMaildir形式にしたので、Maildirディレクトリを作成します。

 既存ユーザーでログインした状態で

maildirmake.dovecot ~/Maildir

 各ユーザーのホームディレクトリにMaildirフォルダを作ります。

 次は、suコマンドでroot権限になってから

maildirmake.dovecot /etc/skel/Maildir

 これで今後追加するユーザーはMaildirディレクトリが自動で作られます。

 メール用ユーザーを追加するときは

adduser ユーザー名
adduser ユーザー名 postfix
/etc/init.d/saslauthd restart
testsaslauthd -u "追加したユーザー名" -p "パスワード"

 テストが通ればOKです。

クライアント側でのメールソフトの設定

 windows Liveメールでの設定例です。

postfix10

 IMAPsの設定

postfix11

 POP3sの設定です。

最後にひとこと

postfix5

 証明書が仮のなんちゃって証明書なのでメーラーを開くたび毎回このメッセージが出ます。私ひとりしか使わないのでこれでもいいのですが、そうでない場合はちゃんとした証明書を用意しましょう。

 このブログで使っているRapid証明書は一番安いヤツなのでメールサーバー兼用として使用できません。ワイルドカード対応かメールサーバー用にもう一枚購入する必要ありです。

スポンサー リンク

2 Replies to “【簡易版】Postfix_Dovecot_SASL2でメールサーバー構築”

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です