CentOS 7 メールサーバ構築

Pocket

※本記事は執筆中であり、一部正確ではない部分があります。でも一応は動くはずです。

今更ですが、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へ変更されるんでしたね。

# yum install postfix

インストール自体はこれで終わりです。

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が入っていない場合には、以下のコマンドでインストールします。

# yum install 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をインストールします。

# yum install 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

詳しくは別途調べてみてください。
少し改善されていると思います。

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください