自宅PCサーバーをリプレースしたので、メールサーバーの設定をやり直した備忘録です。Debianの最大の利点である初心者にやさしい部分を利用して、デフォルトでいける所は端折っていく方針ですので、Debian(もしくはUbuntu)じゃないと通用しない部分多数と思われます。(ホントは細かい所は理解出来ないのです。)といっても相当ややこしい設定です。簡易版と題名に付けましたが、かなり長い記事になりました。
利用OS:Debian GNU/Linux Wheezy 7.8
【2015/05/17追記】
この記事はDebian7.8 Wheezyでのみ設定できた内容です。Debian8.0 Jessieでは別の設定方法で利用しています。
このページの目次
基本方針
Debianには電子メールを利用するためのシステムとしてExim4が標準でインストールされていますが、情報が少ないうえに2年近くバージョンが更新されていないようです。お察ししろということでしょうか。ネットでググると情報豊富で更新も頻繁なpostfixとdovecotを利用するのがよさそうです。さらに外部とメールを送受信するために必須のsmtp-authにはsasl2を利用します。
考慮した項目
- mail-box形式ではなく、Maildir形式にする
- OSのユーザー名とパスワードでsmtp-authをする
- TLS/SSLで自分のとこだけでもセキュア通信にする
考慮してない項目
- ルーターのポート解放設定(ウチの環境はルーターを使ってないので)
- ちゃんとした証明書を使う(今回は仮の証明書を使います。)
- 内部ネットワーク環境(ウチはサーバーと自宅LANのルーターを分離しているので)
- 上位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は親切です。
固定グローバルIPで外部にメール送受信するなら、ここで「インターネットサイト」を選択すると、ある程度適切な設定にしてくれます。
説明の通り、ドメイン名を入れます。
以上でインストールは完了です。
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メールでの設定例です。
IMAPsの設定
POP3sの設定です。
最後にひとこと
証明書が仮のなんちゃって証明書なのでメーラーを開くたび毎回このメッセージが出ます。私ひとりしか使わないのでこれでもいいのですが、そうでない場合はちゃんとした証明書を用意しましょう。
このブログで使っているRapid証明書は一番安いヤツなのでメールサーバー兼用として使用できません。ワイルドカード対応かメールサーバー用にもう一枚購入する必要ありです。