「エアコンの安全な修理・適切なフロン回収」はこちら「業務用エアコンエラーコード」はこちら

Ubuntu Server 18.04でサーバー構築 メールサーバー導入

スポンサーリンク
スポンサーリンク
スポンサーリンク

1.Postfix : インストール/設定

Postfix は、sendmail に代わるMTA (Mail Transport Agent)として開発されたソフトウェアで、sendmail との互換性が高く、安全、メンテナンスが容易、速い、などの特徴を兼ね備えたメールサーバーです。
また、Postfix はメールを送信するSMTP サーバーとしての機能しか無いため、後述でメール受信のPOP サーバーのインストールを別途行います。

1.1 インストール

Postfix をインストールして SMTPサーバーを構築します。SMTP は 25/TCP を使用します。

# apt -y install postfix sasl2-bin

# 一般的な構成設定の選択を求められるが、後で手動設定するため [No Configuration] を選択

+——+ Postfix Configuration +——-+

| General type of mail configuration:  |

|                                      |

|       No configuration               |

|       Internet Site                  |

|       Internet with smarthost        |

|       Satellite system               |

|       Local only                     |

|                                      |

|                                      |

|       <Ok>           <Cancel>        |

|                                      |

+————————————–+

1.2 設定ファイル編集

①main.cf 編集

# cp /usr/share/postfix/main.cf.dist /etc/postfix/main.cf

 # vi /etc/postfix/main.cf

# 78行目:コメント解除

mail_owner = postfix

 # 94行目:コメント解除しホスト名指定

myhostname = mail.korodes.com

# 102行目:コメント解除しドメイン名指定

mydomain = korodes.com

 # 123行目:コメント解除

myorigin = $mydomain

 # 137行目:コメント解除

inet_interfaces = all

 # 185行目:コメント解除

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

 # 228行目:コメント解除

local_recipient_maps = unix:passwd.byname $alias_maps

 # 270行目:コメント解除

mynetworks_style = subnet

 # 287行目:自ネットワーク追記

mynetworks = 127.0.0.0/8, 192.168.11.0/24

 # 407行目:コメント解除

alias_maps = hash:/etc/aliases

 # 418行目:コメント解除

alias_database = hash:/etc/aliases

 # 440行目:コメント解除

home_mailbox = Maildir/

 # 576行目:コメントにしてその下に追記

 #smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)

smtpd_banner = $myhostname ESMTP

 # 650行目:追記

sendmail_path = /usr/sbin/postfix

 # 655行目:追記

newaliases_path = /usr/bin/newaliases

 # 660行目:追記

mailq_path = /usr/bin/mailq

 # 666行目:追記

setgid_group = postdrop

 # 670行目:コメント化

#html_directory =

 # 674行目:コメント化

#manpage_directory =

 # 679行目:コメント化

#sample_directory =

 # 683行目:コメント化

#readme_directory =

 # 送受信メールサイズを10Mに制限

message_size_limit = 10485760

# メールボックスサイズを1Gに制限

mailbox_size_limit = 1073741824

# 最終行へ追記

# SMTP-Auth 設定

smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks, permit_auth_destination, permit_sasl_authenticated, reject

設定反映有効化

# newaliases

# systemctl restart postfix

②master.cf 編集

# vi /etc/postfix/master.cf

# submissionとsmtpsについて、一部コメントアウトする

submission inet n       –       y       –       –       smtpd

  -o syslog_name=postfix/submission

#  -o smtpd_tls_security_level=encrypt

  -o smtpd_sasl_auth_enable=yes

  -o smtpd_tls_auth_only=yes

 

#

smtps     inet  n       –       y       –       –       smtpd

  -o syslog_name=postfix/smtps

  -o smtpd_tls_wrappermode=yes

設定反映有効化

# newaliases

# systemctl restart postfix

スポンサーリンク

2. Dovecot : インストール/設定

Dovecot はメール受信(POP)をするためのサーバーです。
DovecotをインストールしてPOP/IMAPサーバーを構築します。POP は 110/TCP, IMAP は 143/TCP を使用します。

2.1 インストール

①Postfix に SASL機能が提供できるように Dovecot を設定

# apt -y install dovecot-core dovecot-pop3d dovecot-imapd

②設定ファイル「dovecot.conf」編集

#vi /etc/dovecot/dovecot.conf

# 30行目:コメント解除

listen = *, ::

③設定ファイル「10-auth.conf」編集

# vi /etc/dovecot/conf.d/10-auth.conf

# 10行目:コメント解除し変更(プレーンテキスト認証も許可する)

disable_plaintext_auth = no

# 100行目:追記

auth_mechanisms = plain login

④設定ファイル「10-mail.conf」編集

# vi /etc/dovecot/conf.d/10-mail.conf

# 30行目:Maildir形式に変更

mail_location = maildir:~/Maildir

⑤設定ファイル「10-master.conf」編集

# vi /etc/dovecot/conf.d/10-master.conf

# 96-98行目:コメント解除し追記

# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {

 mode = 0666

 user = postfix

 group = postfix

}

⑥再起動

# systemctl restart dovecot

3. メールユーザーアカウント登録

メール用のユーザーアカウントを登録します。
OS上のユーザーアカウントでメールも利用する場合の設定です
OS上のユーザーアカウントでメールを利用する場合は、追加の設定は不要で OSユーザーを登録するのみです
①メールクライアントインストール

# apt -y install mailutils

②メールボックスは Maildir を参照するよう設定

# echo ‘export MAIL=$HOME/Maildir/’ >> /etc/profile.d/mail.sh

③OSユーザー [例:hoge] を追加

# adduser hoge

パスワード :  ******

④メールの送信テスト
追加したユーザーアカウントでログインし、メールの送信テストをします。
自身にテストメール送信 [mail (ユーザー名)@(ホスト名)]

# su –

パスワード

$ cd ~

$ mail hoge@localhost

# Cc の宛先

Cc:

# 件名

Subject: Test Mail

# 本文

This is the first mail.   ← # 本文を終了する場合は Ctrl + D キー

受信メール確認

$ mail

“/home/hoge/Maildir/”: 1 message 1 new

>N   1 hoge                               13/450   Test Mail

3. メールサーバーPostfixに ClamAV適用

Postfix と Clamav を連携させて 送受信メールをリアルタイムスキャンできるように設定します。

Clamav はインストール済みを前提としています。
Amavisd および Clamav Daemon をインストールして Clamav Daemon を起動します。

①インストール

# apt -y install clamav-daemon amavisd-new

②ウィルススキャン有効化

# vi /etc/amavis/conf.d/15-content_filter_mode

# コメント解除してウィルススキャン有効化

@bypass_virus_checks_maps = (

   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);

③自身のドメイン名を登録

# echo ‘srv.world’ > /etc/mailname

④設定ファイル「main.cf」編集

# vi /etc/postfix/main.cf

# 最終行へ追記

content_filter=smtp-amavis:[127.0.0.1]:10024

⑤設定ファイル「master.cf」編集

# vi /etc/postfix/master.cf

# 最終行へ追記

smtp-amavis unix –    –    n    –    2 smtp

    -o smtp_data_done_timeout=1200

    -o smtp_send_xforward_command=yes

    -o disable_dns_lookups=yes

127.0.0.1:10025 inet n    –    n    –    – smtpd

    -o content_filter=

    -o local_recipient_maps=

    -o relay_recipient_maps=

    -o smtpd_restriction_classes=

    -o smtpd_client_restrictions=

    -o smtpd_helo_restrictions=

    -o smtpd_sender_restrictions=

    -o smtpd_recipient_restrictions=permit_mynetworks,reject

    -o mynetworks=127.0.0.0/8

    -o strict_rfc821_envelopes=yes

    -o smtpd_error_sleep_time=0

    -o smtpd_soft_error_limit=1001

    -o smtpd_hard_error_limit=1000

⑥再起動

# systemctl restart clamav-daemon amavis postfix

⑦Thundwebirdやnpopで確認
送受信メールには以下のようなヘッダが付加されます。もしウィルスが検知された場合は削除され、クライアントには配送されません。

4. メールサーバーPostfixにspamassassin をインストール

①インストール

#apt-get update

# apt-get upgrade

# apt-get install spamassassin

「 /etc/mail/spamassassin/local.cf 」があるので追加設定をせずデフォルトで使ってみたいと思います。
②スパムメール保存用 Maildir の作成
スパムメール保存用のディレクトリ「.Spam」を Maildir 形式で作成します。
作成には対象のユーザ(例としてhohe)で行います。
対象のユーザでログインする。

# su – hoge

パスワード : ******

$ cd ~

$ cd Maildir

$ /usr/bin/maildirmake.dovecot  .Spam Maildir

③Procmail の前準備
Procmail がサーバ機にインストールされているかをチェックします。
もし、インストールされていなければ当然、インストールしなければなりませんが、
Procmail がインストールされているかをチェックします。

# apt list procmail

インストールされていれば、以下の結果が返ってきます。

procmail/bionic,now 3.22-26 amd64 [installed]

Procmail へのパスを以下のコマンドで調べます

# which procmail

Procmail へのパスが表示されます。

/usr/bin/procmail

④Procmail の設定
メールフィルタの全体をつかさどる「 /etc/procmailrc 」に記述すると全ユーザに適応されます。
各ユーザ個別のメールフィルタファイルである「 /home/<username>/.procmailrc 」に記述するとそのユーザのみにフィルタが適応されます。
今回は全ユーザに適応させるために「 /etc/procmailrc 」に記述します。

# vi  /etc/procmailrc

# パスを設定

PATH=/bin:/usr/bin:/usr/local/bin

# メールボックスの設定

MAILDIR=$HOME/Maildir

DEFAULT=$MAILDIR/

# Procmailのログファイル出力先を指定

LOGFILE=$MAILDIR/procmaillog

# ロックファイルのパスを指定

LOCKFILE=$HOME/.lockmail

 

# メールヘッダー中に「 X-Spam-*** 」の記述がなければ spamassassin を起動します

:0fw

*!^X-Spam.*

|spamassassin

# メールヘッダー中に「 X-Spam-Status: Yes 」の記述があれば、「 .Spam 」ディレクトリにメールを格納します

:0

* ^X-Spam-Status: Yes

$MAILDIR/.Spam/

⑤Postfix の設定

# vi  /etc/postfix/main.cf

mailbox_command = /usr/bin/procmail

⑥SpamAssassinの起動、Postfixの再起動

# systemctl start spamassassin

# systemctl restart postfix

⑦確認
自分のドメイン宛にメールを送信。
メールのヘッダーに以下のような記述があれば設定が正常に行われています。
以下のヘッダーはスパムメールと判定された場合の記述です。

・・省略・・・
X-Spam-Flag: YES
X-Spam-Checker-Version: SpamAssassin 2.64 (2004-01-11) on mail.example.com
X-Spam-Report:
* 0.1 HTML_60_70 BODY: Message is 60% to 70% HTML
* 0.0 HTML_MESSAGE BODY: HTML included in message
・・省略・・・
X-Spam-Status: Yes, hits=8.2 required=5.5 tests=CLICK_BELOW,
FORGED_RCVD_NET_HELO,HTML_60_70,HTML_FONTCOLOR_UNSAFE,
HTML_IMAGE_ONLY_08,HTML_LINK_CLICK_HERE,HTML_MESSAGE,QENCTXT
autolearn=no version=2.64
X-Spam-Level: ********
・・・省略・・・

メールヘッダー中に上記の「X-Spam-***」の記述があればSpamAssassinは正常に動作しています。
「 X-Spam-Status: Yes 」があれば、そのメールはスパムメールだと判定されています。
逆に「 X-Spam-Status: No 」ならば通常のメールとして判定されています
⑧スパムメールの学習
SpamAssassin にはメールの学習機能があり、判定の精度を高めることができます。

# /usr/bin/sa-learn –spam /home/*/Maildir/.Spam/cur

Learned from 89 message(s) (80 message(s) examined). ←80通のメールをスパムとして学習

⑨通常のメールの学習

# /usr/bin/sa-learn –ham /home/*/Maildir/cur

Learned from 157 message(s) (35 message(s) examined). ←35通のメールを普通のメールととして学習

⑩メール判定の自動実行
メール判定スクリプトを作成し、Cron に登録します。
保存場所は「 /usr/local/bin 」、ファイル名は「 spam-learns.sh 」とします。
スクリプトを保存した後は、「 chmod 750 spam-learns.sh 」として実行可能なアクセス権を与える。

# vi  /usr/local/bin/ spam-learns.sh

#! /bin/sh

# スパムメールの学習

/usr/bin/sa-learn –spam /home/*/Maildir/.Spam/cur

# 通常のメールを学習

/usr/bin/sa-learn –ham /home/*/Maildir/cur

# スパムメール保存ディレクトリの中身を強制的に消去

/bin/rm -f /home/*/Maildir/.Spam/cu

サービスの自動実行登録

# cd /lib/systemd/system

# vi spam-learns.service

[Unit]

Description=demo sample node.js program

[Service]

Type=simple

ExecStart= /usr/local/bin/spam-learns.sh

Restart=always

[Install]

WantedBy=multi-user.targe

 

# crontab -e

0 4 * * * /usr/local/bin/spam-learns.sh ← 追記

 

システム起動時に SpamAssassin を自動的に起動

# systemctl enable spam-learns

error:Content is protected !!
タイトルとURLをコピーしました