サーバー設定 · 3 min read · Nov 03, 2025
完璧なサーバー - Debian 9 (Nginx, BIND, Dovecot, ISPConfig 3.1)
このチュートリアルでは、ISPConfig 3.1 のインストールのために Nginx、BIND、Dovecot を使用した Debian 9 サーバーを準備する方法と、ISPConfig 3.1 のインストール方法を示します。ISPConfig 3 は、次のサービスをウェブブラウザを通じて構成できるウェブホスティングコントロールパネルです:Apache または nginx ウェブサーバー、Postfix メールサーバー、Courier または Dovecot IMAP/POP3 サーバー、MySQL、BIND または MyDNS ネームサーバー、PureFTPd、SpamAssassin、ClamAV など。このセットアップは、Nginx ウェブサーバー、DNS サーバーとしての BIND、および IMAP / POP3 サーバーとしての 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 -y install ssh openssh-serverこれ以降は、PuTTY などの SSH クライアントを使用して、ワークステーションから Debian 9 サーバーに接続し、このチュートリアルの残りの手順に従うことができます。
3 シェルテキストエディタのインストール(オプション)
このチュートリアルでは nano テキストエディタを使用します。一部のユーザーは古典的な vi エディタを好むため、ここでは両方のエディタをインストールします。デフォルトの vi プログラムは Debian および Ubuntu で奇妙な動作をするため、これを修正するために vim-nox をインストールします:
apt-get -y install nano vim-nox(joe などの別のテキストエディタを使用する場合は、これを行う必要はありません。)
4 ホスト名の設定
サーバーのホスト名は「server1.example.com」のようなサブドメインである必要があります。「example.com」のようなサブドメイン部分のないドメイン名をホスト名として使用しないでください。これは後でメール設定に問題を引き起こします。まず、/etc/hosts でホスト名を確認し、必要に応じて変更してください。行は次のようにする必要があります:「IP アドレス - スペース - ドメインを含む完全なホスト名 - スペース - サブドメイン部分」。/etc/hosts を編集します。次のようにします:
nano /etc/hosts127.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.com5 Debian インストールの更新
まず、/etc/apt/sources.list に stretch/updates リポジトリが含まれていることを確認してください(これにより、ClamAV ウイルススキャナーの最新の更新を常に受け取ることができます。このプロジェクトは非常に頻繁にリリースを公開し、時には古いバージョンが動作しなくなることがあります)、および contrib と non-free リポジトリが有効になっていることを確認してください。
nano /etc/apt/sources.listdeb 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重要: 上記のように Debian Backports リポジトリを追加してください。
次に、
apt-get updateを実行して apt パッケージデータベースを更新し、
apt-get upgradeを実行して最新の更新をインストールします(もしあれば)。
6 デフォルトシェルの変更
/bin/sh は /bin/dash へのシンボリックリンクですが、/bin/bash が必要です。したがって、次のようにします:
dpkg-reconfigure dashdash をデフォルトのシステムシェル (/bin/sh) として使用しますか? <– いいえ
これを行わないと、ISPConfig のインストールが失敗します。
7 システムクロックの同期
システムクロックをインターネット上の NTP ( n etwork t ime p rotocol) サーバーと同期させることは良いアイデアです。単に次のコマンドを実行します:
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次の質問が表示されます:
一般的なメール設定のタイプ: <– インターネットサイト
システムメール名: <– server1.example.com
MariaDB / MySQL インストールをセキュリティで保護し、テストデータベースを無効にするには、次のコマンドを実行します:
mysql_secure_installationインストール中に新しい MySQL root パスワードを設定したため、MySQL root パスワードを変更する必要はありません。質問には次のように回答します:
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 セクションのコメントを外します(-o milter_macro_daemon_name=ORIGINATING は必要ないため、そのままにします):
[...]
submission inet n - y - - 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 - y - - 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 restartMariaDB が 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 回設定します。
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次に、mkdir コマンドで新しいディレクトリ /etc/systemd/system/mysql.service.d/ を作成します。
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:~# netstat -tap | grep mysql
tcp6 0 0 [::]:mysql [::]:* LISTEN 4027/mysqld
root@server1:~#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 postgreyISPConfig 3 のセットアップでは amavisd を使用しており、内部で SpamAssassin フィルタライブラリをロードするため、RAM を解放するために SpamAssassin を停止できます:
service spamassassin stop
systemctl disable spamassassin9.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-get install build-essentialそして、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 luarocksluarocks install lpcMetronome 用のシェルユーザーを追加します。
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 installMetronome は現在 /opt/metronome にインストールされました。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。