※本記事は執筆中であり、一部正確ではない部分があります。でも一応は動くはずです。
今更ですが、CentOS 7にメールサーバを構築します。
RHEL 8(RedHat Enterprise Linux 8)が公開されているのに、今更な感じは拭えませんが、多分、CentOS 8でも同じ感じで設定できるでしょう(^^;
インターネット上を散策すると、私を含めて色々な方がインストール方法をブログなどに掲載されていますが、簡単なインストール方法は分かるんだけど、実はファイアーウォールが無視されていたり。。。SELinuxを無効にするとか。。。それって良いの?という感じになったり、少し不安がよぎります。
そんなことがあって、自分に合った記事を見つけるのは意外と大変なんですよね。
ということで、この記事も私に合った記事になっていますので、参考にされる方はご自身の環境に合うか合わないかを判断した上で考えてみてください。
本記事では、メールサーバのインストールを何とか使えるレベルから少し踏み込んでセキュリティ対策も考えた状態までもって行こうと思っています。
それと合わせて、少しだけですけどデフォルトよりも少しパフォーマンスを上げてみようと思います。
こんなことやります。
まず最初に、本記事で紹介するメールサーバでは、postfixとdovecotを採用することにしました。
他のsendmailを使う方などは対象外になります。
以下の様な構成です。
サーバの種類 | 概要 | パッケージ |
SMTPサーバ | メール送信 | postfix |
POPサーバ | メール受信 | dovecot |
インストール前の準備
メールサーバを立ち上げようなんて考えている方はご存知とは思いますが、DNSの設定を行う必要があります。
ドメインを取得して、AレコードとMXレコードを設定してください。
まず、AレコードでグローバルIPアドレスとドメインを紐づけます。
次に、そのドメインとMXレコードを紐づけます。
サーバ本体とは別にファイアウォールを設置されている場合は、そちらの設定も忘れずに行います。
SMTPサーバ/postfix
SMTPサーバとしてpostfixをインストールします。
私の環境では、デフォルトでインストールが完了していました。
以下のコマンドでインストール状況を確認しましょう。
|
# yum list installed | grep postfix |
インストールされていない場合には、いつものようにyumでインストールします。
#CentOS 8ではyumがdnfへ変更されるんでしたね。
インストール自体はこれで終わりです。
postfixの設定
postfixの設定を行います。
/etc/postfix/main.cfを編集します。
編集項目のみを抜粋します。
|
myhostname = mail.hogehoge.jp mydomain = hogehoge.jp inet_interfaces = all mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain ,mail.$mydomain mynetworks = 192.168.0.0/24, 127.0.0.0/8 home_mailbox = Maildir/ |
スパム対策
スパム対策を行います。
まず、必要なパッケージをインストールします。
|
# yum install spamassassin # yum install procmail |
spamassassinを利用したスパム対策では、procmailを使用します。
postfixの設定を変更します。
/etc/postfix/main.cf の下記の内容を有効にします。
|
mailbox_command = /usr/bin/procmail |
/etc/procmailrcを作成し、以下の様に編集します。
|
MAILDIR=$HOME/Maildir DEFAULT=$MAILDIR/ PATH=/bin:/usr/bin :0 fw |/usr/bin/spamc |
通常は、この後にfirewall-cmdでsmtpを有効にしいます。
|
# firewall-cmd --add-service=smtp # firewall-cmd --runtime-to-permanent |
ここまでは簡単な設定です。
SMTPサーバを外部の方が使われないのであれば良いのですが、SMTPサーバを勝手に外部の人が使うケースがあります。
そうならない為に、スパム対策が色々とあります。
そこまでの内容をここで記載するには、時間が掛かるので、今回はここまでにします。
会社などで外部からSMTPサーバへアクセス出来ないようなにしている場合にはこの程度で十分ではないかと思います。
社外からSMTPサーバを使えるようにすると、関係のない人もSMTPサーバを利用出来てしまいます。
インターネット上の公開サーバなども同じです。
その場合には、スパムホスト対策やSMTP-AUTHやCRAM-MD5認証など対策を行う必要があるでしょう。
詳しくは、別の機会に投稿したいと思います。
私の環境では、firewallでSMTPを閉じてしまいました。
外部からSMTPのサービスを使用できなくするだけでOKです。
POPサーバ/dovecot
POPサーバにはdovecotを利用します。
dovecotが入っていない場合には、以下のコマンドでインストールします。
dovecotの設定
dovecotの設定を行います。
まず、/etc/dovecot/conf.d/10-mail.confを編集します。
SSL用のpop3sも有効にしていますが、使わなければコメントアウトしておきます。
|
mail_location = maildir:~/Maildir service pop3-login { inet_listener pop3 { port = 110 } inet_listener pop3s { port = 995 ssl = yes } } |
firewallの設定を行います。
|
# firewall-cmd --add-service=pop3 # firewall-cmd --add-service=pop3s # firewall-cmd --add-service=pop3 |
サービスを起動
サービスを起動します。
|
# systemctl start dovecot |
mailx コマンドによる動作確認
mailxコマンドを用いて動作確認を行います。
まずは、mailxをインストールします。
mailxコマンドを実行します。
|
# date | xargs -I xxx mailx -s \"xxx\" -r user@hogehoge.jp receive@domain.jp |
dateコマンドで日時を出力し、その結果をメールのタイトルとして送信します。
-rで送信元のメールアドレスを指定し、一番最後に送信先を指定します。
実際に受信をしてみるとわかりますが、送信してから受信完了するまでに時間が掛かる場合があります。
失敗すると、次に再送を行うまでに3分程時間を要する設定にデフォルトではなっています。
ちょっとだけチューニング
ほんの少しだけチューニングします。
/etc/postfix/main.cfの最後に以下を追加します。
|
minimal_backoff_time = 60s maximal_backoff_time = 180s maximal_queue_lifetime = 5d bounce_queue_lifetime = 5d queue_run_delay = 120s |
詳しくは別途調べてみてください。
少し改善されていると思います。