サーバー設定 · 3 min read · Nov 06, 2025

完璧なサーバー - Debian 9 (Stretch) と Apache、BIND、Dovecot、PureFTPD、ISPConfig 3.1

このチュートリアルでは、ISPConfig 3.1 のインストールのために Debian 9 サーバー(Apache2、BIND、Dovecot を使用)を準備する方法と、ISPConfig のインストール方法を示します。ウェブホスティングコントロールパネル ISPConfig 3 を使用すると、ウェブブラウザを通じて次のサービスを構成できます:Apache または nginx ウェブサーバー、Postfix メールサーバー、Courier または Dovecot IMAP/POP3 サーバー、MySQL、BIND または MyDNS ネームサーバー、PureFTPd、SpamAssassin、ClamAV など。このセットアップでは、Apache(nginx の代わりに)、BIND、および Dovecot をカバーします。

1 予備ノート

このチュートリアルでは、ホスト名 server1.example.com と IP アドレス 192.168.1.100、ゲートウェイ 192.168.1.1 を使用します。これらの設定はあなたの環境によって異なる場合があるため、適宜置き換えてください。さらに進む前に、Debian 9 の最小インストールが必要です。これは、ホスティングプロバイダーからの Debian 最小イメージか、Minimal Debian Server チュートリアルを使用して基本システムをセットアップすることができます。

2 SSH サーバーのインストール(オプション)

システムインストール中に OpenSSH サーバーをインストールしなかった場合は、今すぐインストールできます:

apt-get install ssh openssh-server

これ以降は、PuTTY などの SSH クライアントを使用して、ワークステーションから Debian 9 サーバーに接続し、このチュートリアルの残りの手順に従うことができます。

3 シェルテキストエディタのインストール(オプション)

このチュートリアルでは nano テキストエディタを使用します。一部のユーザーは古典的な vi エディタを好むため、ここでは両方のエディタをインストールします。デフォルトの vi プログラムは Debian および Ubuntu で奇妙な動作をするため、これを修正するために vim-nox をインストールします:

apt-get install nano vim-nox

vi があなたのお気に入りのエディタである場合は、次のコマンドでファイルを編集する際に nano を vi に置き換えてください。

4 ホスト名の設定

サーバーのホスト名は「server1.example.com」のようなサブドメインであるべきです。「example.com」のようにサブドメイン部分のないドメイン名をホスト名として使用しないでください。そうすると、後でメール設定に問題が発生します。まず、/etc/hosts でホスト名を確認し、必要に応じて変更してください。行は次のようになるべきです:「IP アドレス - スペース - 完全なホスト名(ドメインを含む) - スペース - サブドメイン部分」。私たちのホスト名 server1.example.com の場合、ファイルは次のようになります:

nano /etc/hosts
127.0.0.1       localhost.localdomain   localhost
192.168.1.100   server1.example.com     server1

# 以下の行は IPv6 対応ホストにとって望ましい
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

次に /etc/hostname ファイルを編集します:

nano /etc/hostname

そこにはサブドメイン部分のみが含まれるべきで、私たちの場合は:

server1

最後に、変更を適用するためにサーバーを再起動します:

reboot

再度ログインし、次のコマンドでホスト名が正しいか確認します:

hostname  
hostname -f

出力は次のようになるべきです:

root@server1:/tmp# hostname  
server1  
root@server1:/tmp# hostname -f  
server1.example.com

5 Debian インストールの更新

まず、/etc/apt/sources.list に stretch/updates リポジトリが含まれていることを確認してください(これにより、常に最新のセキュリティ更新を受け取ることができます)、および contrib と non-free リポジトリが有効になっていることを確認してください。いくつかの必要なパッケージはメインリポジトリには含まれていません。

nano /etc/apt/sources.list
deb http://ftp.us.debian.org/debian/ stretch main contrib non-free  
deb-src http://ftp.us.debian.org/debian/ stretch main contrib non-free  
  
deb http://security.debian.org/debian-security stretch/updates main contrib non-free  
deb-src http://security.debian.org/debian-security stretch/updates main contrib non-free

次に実行します:

apt-get update

apt パッケージデータベースを更新するために

apt-get upgrade

最新の更新をインストールするために(もしあれば)。

6 デフォルトシェルの変更

/bin/sh は /bin/dash へのシンボリックリンクですが、私たちは /bin/bash が必要であり、/bin/dash ではありません。したがって、次のようにします:

dpkg-reconfigure dash

デフォルトのシステムシェルとして dash を使用しますか? <- いいえ

これを行わないと、ISPConfig のインストールが失敗します。

7 システムクロックの同期

システムクロックをインターネット上の NTP(network time protocol)サーバーと同期させるのは良い考えです。単に実行します。

apt-get install ntp

そうすれば、システム時間は常に同期されます。

8 Postfix、Dovecot、MySQL、rkhunter、および Binutils のインストール

次のコマンドで Postfix、Dovecot、MySQL、rkhunter、および Binutils を一度にインストールできます:

apt-get install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd sudo

MySQL を MariaDB の代わりに使用する場合は、上記のコマンドの「mariadb-client mariadb-server」を「mysql-client mysql-server」に置き換えてください。

次の質問が表示されます:

一般的なメール構成のタイプ: <– インターネットサイト
システムメール名: <– server1.example.com

MariaDB / MySQL のインストールを保護し、テストデータベースを無効にするには、次のコマンドを実行します:

mysql_secure_installation

質問には次のように答えてください:

root パスワードを変更しますか? [Y/n] <-- y  
新しいパスワード: <-- 新しい MySQL root パスワードを入力  
新しいパスワードを再入力: <-- MySQL root パスワードを繰り返す  
匿名ユーザーを削除しますか? [Y/n] <-- y  
リモートからの root ログインを禁止しますか? [Y/n] <-- y  
テストデータベースとそのアクセスを削除しますか? [Y/n] <-- y  
特権テーブルを再読み込みしますか? [Y/n] <-- y

次に、Postfix で TLS/SSL および送信ポートを開きます:

nano /etc/postfix/master.cf

送信および smtps セクションのコメントを外し、必要に応じて行を追加して、master.cf ファイルのこのセクションが以下のものと正確に一致するようにします。

[...]
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 smtpd_reject_unlisted_recipient=no  
# -o smtpd_client_restrictions=$mua_client_restrictions  
# -o smtpd_helo_restrictions=$mua_helo_restrictions  
# -o smtpd_sender_restrictions=$mua_sender_restrictions  
# -o smtpd_recipient_restrictions=  
# -o smtpd_relay_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 smtpd_reject_unlisted_recipient=no  
# -o smtpd_client_restrictions=$mua_client_restrictions  
# -o smtpd_helo_restrictions=$mua_helo_restrictions  
# -o smtpd_sender_restrictions=$mua_sender_restrictions  
# -o smtpd_recipient_restrictions=  
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject  
# -o milter_macro_daemon_name=ORIGINATING
[...]

その後、Postfix を再起動します:

service postfix restart

MySQL が localhost のみではなく、すべてのインターフェースでリッスンするようにしたいので、/etc/mysql/mariadb.conf.d/50-server.cnf を編集し、bind-address = 127.0.0.1 の行をコメントアウトし、sql-mode=”NO_ENGINE_SUBSTITUTION” の行を追加します:

nano /etc/mysql/mariadb.conf.d/50-server.cnf
[...]
# skip-networking の代わりに、デフォルトは現在 localhost のみをリッスンすることです。
# より互換性があり、セキュリティが低下することはありません。
#bind-address           = 127.0.0.1  
  
sql-mode="NO_ENGINE_SUBSTITUTION"  
  
[...]  

MariaDB のパスワード認証方法をネイティブに設定し、後で PHPMyAdmin から root ユーザーとして接続できるようにします:

echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u root

ファイル /etc/mysql/debian.cnf を編集し、そこに MYSQL / MariaDB root パスワードを 2 回設定します。行は password で始まります。

nano /etc/mysql/debian.cnf

追加する必要がある MySQL root パスワードは、読み取り専用で表示され、この例ではパスワードは「howtoforge」です。

# Debian スクリプト用に自動生成されました。触れないでください!  
[client]  
host = localhost  
user = root  
password = howtoforge  
socket = /var/run/mysqld/mysqld.sock  
[mysql_upgrade]  
host = localhost  
user = root  
password = howtoforge  
socket = /var/run/mysqld/mysqld.sock  
basedir = /usr

Error in accept: Too many open files ‘ エラーを防ぐために、MariaDB のオープンファイル制限を高く設定します。

エディタでファイル /etc/security/limits.conf を開きます:

nano /etc/security/limits.conf

そして、ファイルの最後に次の行を追加します。

mysql soft nofile 65535  
mysql hard nofile 65535

次に、新しいディレクトリ /etc/systemd/system/mysql.service.d/ を mkdir コマンドで作成します。

mkdir -p /etc/systemd/system/mysql.service.d/

そして、その中に新しいファイルを追加します:

nano /etc/systemd/system/mysql.service.d/limits.conf

そのファイルに次の行を貼り付けます:

[Service]  
LimitNOFILE=infinity

ファイルを保存し、nano エディタを閉じます。

次に、systemd をリロードし、MariaDB を再起動します:

systemctl daemon-reload  
service mysql restart

ネットワーキングが有効になっているか確認します。実行します。

netstat -tap | grep mysql

出力は次のようになるべきです:

root@server1:/home/administrator# netstat -tap | grep mysql  
tcp6 0 0 [::]:mysql [::]:* LISTEN 17776/mysqld  
root@server1:/home/administrator#

9 Amavisd-new、SpamAssassin、および ClamAV のインストール

amavisd-new、SpamAssassin、ClamAV をインストールするには、次のコマンドを実行します。

apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl libdbd-mysql-perl postgrey

ISPConfig 3 のセットアップは amavisd を使用し、内部で SpamAssassin フィルターライブラリをロードするため、RAM を解放するために SpamAssassin を停止できます:

service spamassassin stop  
systemctl disable spamassassin

9.1 Metronome XMPP サーバーのインストール(オプション)

このステップでは、XMPP プロトコルと互換性のあるチャットサーバーを提供する Metronome XMPP サーバーをインストールします。このステップはオプションであり、チャットサーバーが必要ない場合は、このステップをスキップできます。他の ISPConfig 機能はこのソフトウェアに依存していません。

Debian に Prosody パッケージリポジトリを追加します。

echo "deb http://packages.prosody.im/debian stretch main" > /etc/apt/sources.list.d/metronome.list  
wget http://prosody.im/files/prosody-debian-packages.key -O - | sudo apt-key add -

パッケージリストを更新します:

apt-get update

そして、apt でパッケージをインストールします。

apt-get install git lua5.1 liblua5.1-0-dev lua-filesystem libidn11-dev libssl-dev lua-zlib lua-expat lua-event lua-bitop lua-socket lua-sec luarocks luarocks
luarocks install lpc

Metronome 用のシェルユーザーを追加します。

adduser --no-create-home --disabled-login --gecos 'Metronome' metronome

/opt ディレクトリに Metronome をダウンロードし、コンパイルします。

cd /opt; git clone https://github.com/maranda/metronome.git metronome  
cd ./metronome; ./configure --ostype=debian --prefix=/usr  
make  
make install

Metronome は現在 /opt/metronome にインストールされました。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。