ウェブサイト検索

Debian 9にPostfixとWebメールを使用して完全なメールサーバーをインストールする


このチュートリアルでは、Debian 9 リリースでPostfixを使用して完全なメールサーバーをインストールし構成する方法を説明します。また、IMAPプロトコルを介してメールを取得し作成するために、Dovecotを使用してアカウントのメールボックスを構成する方法もカバーします。ユーザーはメールユーザーエージェントとしてRainloop Webmailインターフェースを使用してメールを処理します。

要件

  1. Debian 9 ミニマルインストール
  2. ネットワークインターフェイスに設定された静的IPアドレス
  3. ローカルまたは公開登録されたドメイン名。

このチュートリアルでは、DNS解決の処理にDNSサーバーを使用せずに、/etc/hostsファイルのみを介して構成されたプライベートドメインアカウントを使用してメールサーバー設定を行います。

ステップ1: Debian上のPostfixメールサーバーの初期設定

1. 最初のステップとして、ルート権限を持つアカウントでマシンにログインするか、直接ルートユーザーとしてログインし、以下のコマンドを実行してDebianシステムが最新のセキュリティパッチやソフトウェア、パッケージのリリースで最新であることを確認してください。

# apt-get update 
apt-get upgrade 

2. 次のステップでは、システム管理に使用される以下のソフトウェアパッケージをインストールします。次のコマンドを入力してください。

# apt-get install curl net-tools bash-completion wget lsof nano

3. 次に、お好みのテキストエディタで/etc/host.confファイルを編集のために開き、DNS解決が最初にhostsファイルを読み取るようにするために、ファイルの最初に次の行を追加します。

order hosts,bind
multi on

4. 次に、マシンのFQDNを設定し、ドメイン名とシステムのFQDNを/etc/hostsファイルに追加します。ドメインとFQDNの名前を解決するためにシステムのIPアドレスを使用します。以下のスクリーンショットに示されているように。

IPアドレスとドメインを適宜置き換えてください。その後、ホスト名を適切に適用するためにマシンを再起動します。

# hostnamectl set-hostname mail.linux-console.net
echo "192.168.0.102 linux-console.net mail.linux-console.net" >> /etc/hosts
init 6

5. 再起動後、次のコマンドのシリーズを実行して、ホスト名が正しく設定されているかを確認します。ドメイン名、FQDN、ホスト名、およびシステムのIPアドレスがhostnameコマンドによって返されるべきです。

# hostname
hostname -s
hostname -f
hostname -A
hostname -i
cat /etc/hostname 

6. また、以下のコマンドを発行して、ドメインがローカルクエリに正しく応答するかテストします。DNSサーバーを使用していないため、ネットワーク内の他のシステムから発行されたリモートクエリにはドメインは応答しないことに注意してください。

ただし、手動でドメイン名を各システムの/etc/hostsファイルに追加した場合、他のシステムからドメインが応答する必要があります。また、/etc/hostsファイルに追加されたドメインのDNS解決は、host、nslookupまたはdigコマンドでは機能しないことに注意してください。

# getent ahosts mail.linux-console.net
ping linux-console.net
ping mail.linux-console.net

ステップ2: DebianにPostfixメールサーバーをインストールする

7. メールサーバーが適切に機能するために必要な最も重要なソフトウェアはMTAエージェントです。MTAはサーバークライアントアーキテクチャで構築されたソフトウェアで、メールサーバー間のメール転送を担当しています。

このガイドでは、Postfixをメール転送エージェントとして使用します。公式リポジトリからDebianにPostfixをインストールするには、次のコマンドを実行してください。

# apt-get install postfix

8. Postfixのインストールプロセス中に、一連の質問が表示されます。最初のプロンプトでは、Postfixの設定の一般的なタイプとしてインターネットサイトオプションを選択し、続行するために[enter]キーを押します。その後、次のスクリーンショットのようにシステムメール名にあなたのドメイン名を追加してください。

ステップ3: DebianでPostfixメールサーバーを設定する

9. 次に、Postfixのメイン設定ファイルをバックアップし、以下のコマンドを使用してあなたのドメインに対してPostfixを設定します。

# cp /etc/postfix/main.cf{,.backup}
nano /etc/postfix/main.cf

今、main.cfファイルに表示されているようにPostfixの設定を構成します。

# See /usr/share/postfix/main.cf.dist for a commented, more complete version

smtpd_banner = $myhostname ESMTP
biff = no
appending .domain is the MUA's job.
append_dot_mydomain = no
readme_directory = no

See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on
fresh installs.
compatibility_level = 2

TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
information on enabling SSL in the smtp client.

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = mail.debian.lan

mydomain = debian.lan

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

#myorigin = /etc/mailname
myorigin = $mydomain

mydestination = $myhostname, $mydomain, localhost.$mydomain, localhost
relayhost = 
mynetworks = 127.0.0.0/8, 192.168.1.0/24
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
#inet_protocols = all
inet_protocols = ipv4

home_mailbox = Maildir/

SMTP-Auth settings
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

myhostname、mydomain、および mynetworks 変数を、独自の設定と一致するように置き換えます。

Postfixのメイン設定ファイルをダンプし、最終的なエラーを確認するためにpostconf -nコマンドを実行できます。以下のスクリーンショットに示されたように。

# postconf -n

10. すべての設定が整ったら、Postfixデーモンを再起動して変更を適用し、netstatコマンドを実行してPostfixマスターサービスがポート25にバインドされているかを確認してサービスが実行中であることを確認します。

# systemctl restart postfix
systemctl status postfix
netstat -tlpn

ステップ3: DebianでPostfixメールサーバーをテストする

11. postfixがメール転送を処理できるかどうかをテストするために、まず次のコマンドを実行してmailutilsパッケージをインストールします。

# apt-get install mailutils

12. 次に、mailコマンドラインユーティリティを使用して、rootアカウントにメールを送信し、以下のコマンドを発行してメールキューを確認し、rootのホームMaildirディレクトリの内容をリストすることで、メールが正常に送信されたかどうかを確認します。

# echo "mail body"| mail -s "test mail" root
mailq
mail
ls Maildir/
ls Maildir/new/
cat Maildir/new/[TAB]

13. 次のコマンドを実行することで、メールログファイルの内容を点検することで、メールがPostfixサービスによってどのように処理されたかを確認することもできます。

# tailf /var/log/mail.log

ステップ4: DebianにDovecot IMAPをインストールおよび設定する

14. このガイドで、ローカルの受信者のメールボックスに電子メールメッセージを配信するために使用するメール配信エージェントはDovecot IMAPです。IMAPは、143および993(SSL)ポートで動作するプロトコルで、複数のメールクライアント間でメールを読み取ったり、削除したり、移動したりする役割を担っています。

IMAPプロトコルは、各メッセージのコピーがサーバーに保存されることを保証するために同期を使用し、ユーザーがサーバー上に複数のディレクトリを作成し、メールをこれらのディレクトリに移動してメールを整理することを可能にします。

POP3プロトコルでは、状況は異なります。POP3プロトコルでは、ユーザーがメールを整理するためにサーバー上に複数のディレクトリを作成することは許可されていません。メールを管理するためには、受信トレイフォルダーのみがあります。

Dovecot コアサーバーと Dovecot IMAP パッケージを Debian にインストールするには、次のコマンドを実行してください。

# apt install dovecot-core dovecot-imapd

15. Dovecotがシステムにインストールされたら、以下のdovecotファイルを開いて編集し、以下の変更を加えてください。まず、/etc/dovecot/dovecot.confファイルを開き、次の行を検索してコメントを外します:

listen = *, ::

16. 次に、/etc/dovecot/conf.d/10-auth.conf を編集のために開き、以下の行を見つけて、以下の抜粋のように変更します。

disable_plaintext_auth = no
auth_mechanisms = plain login

17. /etc/dovecot/conf.d/10-mail.conf ファイルを開き、メールを保存するためにMbox形式の代わりにMaildirロケーションを使用するために次の行を追加します。

mail_location = maildir:~/Maildir

18. 最後に編集するファイルは /etc/dovecot/conf.d/10-master.conf です。ここで、Postfix smtp-auth ブロックを検索し、次の変更を行います:

# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
  mode = 0666
  user = postfix
  group = postfix
 }

19. 上記のすべての変更を行った後、Dovecot ダイモンを再起動して変更を反映させ、以下のコマンドを発行してそのステータスを確認し、Dovecot がポート 143 にバインドされているかどうかを確認してください。

# systemctl restart dovecot.service 
systemctl status dovecot.service 
netstat -tlpn

20. 新しいユーザーアカウントをシステムに追加して、メールサーバーが正しく動作しているかテストし、telnet または netcat コマンドを使用してSMTPサーバーに接続し、追加した新しいユーザーに新しいメールを送信します。下記の抜粋に示されています。

# adduser matie
nc localhost 25
ehlo localhost
mail from: root
rcpt to: matie
data
subject: test
Mail body
.
quit

21. 下のスクリーンショットに示すように、ユーザーのホームディレクトリの内容をリストして、新しいユーーメールボックスにメールが届いているか確認してください。

# ls /home/test_mail/Maildir/new/

22. また、コマンドラインからIMAPプロトコルを介してユーザーのメールボックスに接続することもできます。以下の抜粋に示されているように、新しいメールはユーザーの受信トレイに表示されるはずです。

# nc localhost 143
x1 LOGIN matie user_password
x2 LIST "" "*"
x3 SELECT Inbox
x4 LOGOUT

ステップ5: Debianにウェブメールをインストールして構成する

23. ユーザーはRainloop Webmailクライアントを使ってメールを管理します。Rainloopメールユーザーエージェントをインストールする前に、まずApache HTTPサーバーと、Rainloopに必要な以下のPHPモジュールをインストールしてください。次のコマンドを実行します。

# apt install apache2 php7.0 libapache2-mod-php7.0 php7.0-curl php7.0-xml

24. Apacheウェブサーバーがインストールされた後、ディレクトリパスを/var/www/html/ディレクトリに変更し、index.htmlファイルを削除して、Rainloop Webmailをインストールするために次のコマンドを実行します。

# cd /var/www/html/
rm index.html 
curl -sL https://repository.rainloop.net/installer.php | php

25. Rainloop Webmailクライアントがシステムにインストールされたら、ドメインのIPアドレスに移動し、次のデフォルトの資格情報でRainloop管理ウェブインターフェースにログインします:

http://192.168.0.102/?admin
User: admin
Password: 12345

26. ドメイン メニューに移動し、ドメインを追加 ボタンをクリックして、以下のスクリーンショットに示されているようにドメイン名設定を追加します。

27. ドメイン設定の追加が完了したら、Ranloop管理インターフェースからログアウトし、ブラウザをIPアドレスに向けて、メールアカウントでウェブメールクライアントにログインします。

Rainloopウェブメールに正常にログインした後、コマンドラインから以前に送信されたメールが受信箱フォルダに表示されるはずです。

http://192.168.0.102
User: [email 
Pass: the matie password

27. 新しいユーザーを追加するには、-m フラグを付けて useradd コマンドを使用してユーザーのホームディレクトリを作成します。ただし、その前に次のコマンドを使用してすべてのユーザーに対して Maildir のパス変数を設定してください。

# echo 'export MAIL=$HOME/Maildir' >> /etc/profile
useradd -m user3
passwd user3

28. システムから特定のローカルメールアカウントに全てのルートのメールをリダイレクトしたい場合は、以下のコマンドを実行してください。リダイレクトされたメールやルートアカウント宛のすべてのメールは、下の画像に示されているように、あなたのメールユーザーに転送されます。

# echo "root: test_mail" >> /etc/aliases
newaliases

それで全部です!あなたは、ローカルユーザーがメールを通じて通信できるように、施設内にメールサーバーを正常にインストールして設定しました。しかし、この種類のメール構成は、いかなる方法でも安全ではなく、あなたが完全に制御しているシステムやネットワークの小規模なセットアップにのみ展開することをお勧めします。

関連記事: