サーバー設定 · 10 min read · Nov 04, 2025

完璧なサーバー - Debian 10 (Nginx, BIND, Dovecot, ISPConfig 3.2)

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

1 予備ノート

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

以下のすべてのコマンドはrootユーザーとして実行されます。直接rootユーザーとしてログインするか、通常のユーザーとしてログインしてから次のコマンドを使用して、サーバー上でrootユーザーになります。

su -

重要:’su -‘を使用し、単に’su’を使用しないでください。そうしないと、DebianによってPATH変数が誤って設定されます。

2 SSHサーバーのインストール

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

apt-get -y install ssh openssh-server

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

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/hosts
127.0.0.1       localhost.localdomain   localhost
192.168.0.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にbuster/updatesリポジトリが含まれていることを確認します(これにより、ClamAVウイルススキャナーの最新の更新を常に受け取ることができます。このプロジェクトは非常に頻繁にリリースを公開し、時には古いバージョンが動作しなくなることがあります)、およびcontribおよびnon-freeリポジトリが有効になっていることを確認します。

nano /etc/apt/sources.list
deb http://deb.debian.org/debian/ buster main contrib non-free  
deb-src http://deb.debian.org/debian/ buster main contrib non-free  
  
deb http://security.debian.org/debian-security buster/updates main contrib non-free  
deb-src http://security.debian.org/debian-security buster/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を1つのコマンドでインストールできます:

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 curl

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

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

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

mysql_secure_installation

MariaDBのrootパスワードは、インストール中に新しいものを設定したため、変更する必要はありません。質問には次のように答えます:

rootパスワードを変更しますか? [Y/n] <-- y  
新しいパスワード: <-- 新しいデータベースrootパスワードを入力  
新しいパスワードを再入力: <-- データベース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ファイルのこのセクションが以下のものと正確に一致するようにします。重要:smtpsおよび送信で始まる行の前の#を削除し、これらの行の後の-o行だけでなく、すべての行から削除してください!

[...]  
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 restart

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

nano /etc/mysql/mariadb.conf.d/50-server.cnf
[...]  

# skip-networkingの代わりに、デフォルトは現在localhostのみにリッスンすることです。  
# これはより互換性があり、セキュリティが低下することはありません。  
#bind-address           = 127.0.0.1  
  
[...]  

ファイルを保存します。次に、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

次に、新しいディレクトリ/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  
systemctl restart mariadb

警告「Warning: The unit file, source configuration file or drop-ins of mariadb.service changed on disk. Run ‘systemctl daemon-reload’ to reload units.」を無視します。

dbconfig-commonシステムをインストールします:

apt-get install dbconfig-common dbconfig-mysql

現在、Debianのdbconfig-commonシステムには、後でRoundCubeのインストールを妨げる問題があります。次のコマンドを実行して修正します:

sed -i -r 's/_dbc_nodb="yes" dbc_mysql_exec/_dbc_nodb="yes"; dbc_mysql_exec/g' /usr/share/dbconfig-common/internal/mysql

次に、ネットワーキングが有効になっていることを確認します。次を実行します:

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 unzip bzip2 arj nomarch lzop cabextract p7zip p7zip-full unrar lrzip 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を停止できます:

systemctl stop spamassassin  
systemctl disable spamassassin

10 Nginx、PHP(PHP-FPM)、およびFcgiwrapのインストール

NginxはDebian用のパッケージとして利用可能で、次のようにインストールできます:

apt-get install nginx

システムにApache2がすでにインストールされている場合は、今すぐ停止します…

systemctl stop apache2

Failed to stop apache2.service: Unit apache2.service not loaded.」というメッセージは問題ありません。

…そしてApacheのシステム起動リンクを削除します:

systemctl disable apache2

その後、nginxを起動します:

systemctl start nginx

(Apache2とnginxの両方がインストールされている場合、ISPConfig 3インストーラーはどちらを使用するかを尋ねます。この場合はnginxと答えてください。これらのうちの1つだけがインストールされている場合、ISPConfigは必要な構成を自動的に行います。)

PHP 7.3をnginxで動作させるために、PHP-FPMを通じて動作させることができます(PHP-FPM(FastCGIプロセスマネージャ)は、特に忙しいサイトに便利な追加機能を持つPHP FastCGIの代替実装です)。次のようにインストールします:

apt-get install php7.3-fpm

PHP-FPMは、ソケット/var/run/php/php7.3-fpm.sockでFastCGIサーバーを実行するデーモンプログラムです。

PHPでMySQLサポートを得るために、php7.3-mysqlパッケージをインストールできます。アプリケーションに必要な他のPHPモジュールもいくつかインストールするのが良いアイデアです。次のようにして利用可能なPHPモジュールを検索できます:

apt-cache search php7

必要なものを選択し、次のようにインストールします:

apt-get install php7.3 php7.3-common php7.3-gd php7.3-mysql php7.3-imap php7.3-cli php7.3-cgi php-pear mcrypt imagemagick libruby php7.3-curl php7.3-intl php7.3-pspell php7.3-recode php7.3-sqlite3 php7.3-tidy php7.3-xmlrpc php7.3-xsl memcached php-memcache php-imagick php-gettext php7.3-zip php7.3-mbstring memcached php7.3-soap php7.3-fpm php7.3-opcache php-apcu

次に、/etc/php/7.3/fpm/php.iniを開きます…

nano /etc/php/7.3/fpm/php.ini

…そしてcgi.fix_pathinfo=0とタイムゾーンを設定します:

[...]  
cgi.fix_pathinfo=0  
[...]  
date.timezone="Europe/Berlin"  
[...]  

(利用可能なすべてのタイムゾーンは/usr/share/zoneinfoディレクトリおよびそのサブディレクトリにあります。)

次に、PHP-FPMをリロードします:

systemctl restart php7.3-fpm

nginxでCGIサポートを得るために、Fcgiwrapをインストールします。

Fcgiwrapは、複雑なCGIスクリプトにも対応できるCGIラッパーで、各vhostが独自のcgi-binディレクトリを使用できるため、共有ホスティング環境で使用できます。

fcgiwrapパッケージをインストールします:

apt-get install fcgiwrap

インストール後、fcgiwrapデーモンはすでに起動しているはずです。そのソケットは/var/run/fcgiwrap.socketです。起動していない場合は、fservice fcgiwrapスクリプトを使用して起動できます。

これで完了です!nginx vhostを作成すると、ISPConfigが正しいvhost構成を処理します。

10.1 phpMyAdminのインストール

Debian 10以降、PHPMyAdminは.debパッケージとして利用できなくなりました。したがって、ソースからインストールします。

PHPMyadmin用のフォルダを作成します:

mkdir /usr/share/phpmyadmin  
mkdir /etc/phpmyadmin  
mkdir -p /var/lib/phpmyadmin/tmp  
chown -R www-data:www-data /var/lib/phpmyadmin  
touch /etc/phpmyadmin/htpasswd.setup

/tmpディレクトリに移動し、PHPMyAdminのソースをダウンロードします:

cd /tmp  
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.tar.gz

ダウンロードしたアーカイブファイルを解凍し、ファイルを/usr/share/phpmyadminフォルダに移動し、/tmpディレクトリをクリーンアップします。

tar xfz phpMyAdmin-4.9.0.1-all-languages.tar.gz  
mv phpMyAdmin-4.9.0.1-all-languages/* /usr/share/phpmyadmin/  
rm phpMyAdmin-4.9.0.1-all-languages.tar.gz  
rm -rf phpMyAdmin-4.9.0.1-all-languages

提供されたサンプルファイルに基づいて、PHPMyaAdmin用の新しい設定ファイルを作成します:

cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php

nanoエディタで設定ファイルを開きます:

nano /usr/share/phpmyadmin/config.inc.php

32文字の長さの安全なパスワード(ブローフィッシュシークレット)を設定します:

$cfg['blowfish_secret'] = 'bD3e6wva9fnd93jVsb7SDgeiBCd452Dh'; /* COOKIE AUTHのためにこれを入力する必要があります! */

私の例のブローフィッシュシークレットを使用せず、自分のものを設定してください!

次に、PHPMyAdminが一時ファイルを保存するために使用するディレクトリを設定する行を追加します:

$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';

次のステップでは、phpMyadminの設定ストア(データベース)を構成します。

rootユーザーとしてMariaDBにログインします:

mysql -u root -p

MariaDBシェルで、PHPMyAdmin用の新しいデータベースを作成します:

MariaDB [(none)]> CREATE DATABASE phpmyadmin;

次に、新しいユーザーを作成します:

MariaDB [(none)]> CREATE USER 'pma'@'localhost' IDENTIFIED BY 'mypassword';

上記および以下のコマンドでmypasswordという単語を、選択した安全なパスワードに置き換え、同じパスワードを2回使用します。次に、ユーザーにこのデータベースへのアクセスを付与し、データベースの権限を再読み込みします。

MariaDB [(none)]> GRANT ALL PRIVILEGES ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;  
MariaDB [(none)]> FLUSH PRIVILEGES;  
MariaDB [(none)]> EXIT

最後に、SQLテーブルをデータベースにロードします:

mysql -u root -p phpmyadmin < /usr/share/phpmyadmin/sql/create_tables.sql

要求されたらMariaDBのrootパスワードを入力します。

今やるべきことは、設定ファイルにphpmyadminユーザーの詳細を設定することだけです。再度nanoエディタでファイルを開きます:

nano /usr/share/phpmyadmin/config.inc.php

以下の行が見えるまでスクロールし、それらを編集します:

/* ストレージを操作するために使用されるユーザー */  
$cfg['Servers'][$i]['controlhost'] = 'localhost';  
$cfg['Servers'][$i]['controlport'] = '';  
$cfg['Servers'][$i]['controluser'] = 'pma';  
$cfg['Servers'][$i]['controlpass'] = 'mypassword';  
  
/* ストレージデータベースとテーブル */  
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';  
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';  
$cfg['Servers'][$i]['relation'] = 'pma__relation';  
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';  
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';  
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';  
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';  
$cfg['Servers'][$i]['history'] = 'pma__history';  
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';  
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';  
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';  
$cfg['Servers'][$i]['recent'] = 'pma__recent';  
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';  
$cfg['Servers'][$i]['users'] = 'pma__users';  
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';  
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';  
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';  
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';  
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';  
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

編集した行は赤でマークされています。mypasswordをphpmyadminユーザーのために選択したパスワードに置き換えます。行の前の//が削除されたことに注意してください!

ISPConfig 3.2をインストールした後、次のようにしてphpMyAdminにアクセスできます:

ISPConfigアプリのvhostはnginxのポート8081でphpMyAdmin構成を持っているため、http://server1.example.com:8081/phpmyadminまたはhttp://server1.example.com:8081/phpMyAdminを使用してphpMyAdminにアクセスできます。

ウェブサイトから使用できる/phpmyadminまたは/phpMyAdminエイリアスを使用したい場合、これはApacheよりも少し複雑です。nginxにはグローバルエイリアス(すべてのvhostに対して定義できるエイリアス)がないため、phpMyAdminにアクセスしたいvhostのためにこれらのエイリアスを定義する必要があります。

これを行うには、後でISPConfigのウェブサイトのオプションタブのnginxディレクティブフィールドに次の内容を貼り付けます:

        location /phpmyadmin {
               root /usr/share/;
               index index.php index.html index.htm;
               location ~ ^/phpmyadmin/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /etc/nginx/fastcgi_params;
                       fastcgi_param PATH_INFO $fastcgi_script_name;
                       fastcgi_buffer_size 128k;
                       fastcgi_buffers 256 4k;
                       fastcgi_busy_buffers_size 256k;
                       fastcgi_temp_file_write_size 256k;
                       fastcgi_intercept_errors on;
               }
               location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /usr/share/;
               }
        }
        location /phpMyAdmin {
               rewrite ^/* /phpmyadmin last;
        }

http sを使用する場合は、phpMyAdmin構成に次の行を追加する必要があります:

        location /phpmyadmin {
               root /usr/share/;
               index index.php index.html index.htm;
               location ~ ^/phpmyadmin/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
                       fastcgi_param HTTPS on; # <-- この行を追加
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /etc/nginx/fastcgi_params;
                       fastcgi_param PATH_INFO $fastcgi_script_name;
                       fastcgi_buffer_size 128k;
                       fastcgi_buffers 256 4k;
                       fastcgi_busy_buffers_size 256k;
                       fastcgi_temp_file_write_size 256k;
                       fastcgi_intercept_errors on;
               }
               location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /usr/share/;
               }
        }
        location /phpMyAdmin {
               rewrite ^/* /phpmyadmin last;
        }

httpとhttpsの両方を使用する場合は、$https変数を使用できます。nginxディレクティブフィールドに戻り、fastcgi_param HTTPS on;の代わりにfastcgi_param HTTPS $https;を追加して、httpおよびhttpsリクエストの両方でphpMyAdminを使用できるようにします:

        location /phpmyadmin {
               root /usr/share/;
               index index.php index.html index.htm;
               location ~ ^/phpmyadmin/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
                       fastcgi_param HTTPS $https; # <-- この行を追加
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /etc/nginx/fastcgi_params;
                       fastcgi_param PATH_INFO $fastcgi_script_name;
                       fastcgi_buffer_size 128k;
                       fastcgi_buffers 256 4k;
                       fastcgi_busy_buffers_size 256k;
                       fastcgi_temp_file_write_size 256k;
                       fastcgi_intercept_errors on;
               }
               location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /usr/share/;
               }
        }
        location /phpMyAdmin {
               rewrite ^/* /phpmyadmin last;
        }

11 Let’s Encryptのインストール

ISPConfigは、acme.shをLet’s Encryptクライアントとして使用しています。次のコマンドを使用してacme.shをインストールします:

curl https://get.acme.sh | sh -s

12 Mailmanのインストール

ISPConfigを使用すると、Mailmanのメーリングリストを管理(作成/変更/削除)できます。この機能を利用したい場合は、次のようにMailmanをインストールします:

apt-get install mailman

少なくとも1つの言語を選択します。例:

サポートする言語: <– en(英語)
不足しているサイトリスト <– OK

Mailmanを開始する前に、mailmanという名前の最初のメーリングリストを作成する必要があります:

newlist mailman

root@server1:~# newlist mailman
リストを運営する人のメールアドレスを入力してください: <– 管理者のメールアドレス、例:[email protected]
初期Mailmanパスワード: <– Mailmanリストの管理者パスワード
メーリングリストを作成するには、次の行を追加して/etc/aliases(または同等の)ファイルを編集し、newaliasesプログラムを実行する必要があります:

Mailmanメーリングリスト

mailman: “|/var/lib/mailman/mail/mailman post mailman”
mailman-admin: “|/var/lib/mailman/mail/mailman admin mailman”
mailman-bounces: “|/var/lib/mailman/mail/mailman bounces mailman”
mailman-confirm: “|/var/lib/mailman/mail/mailman confirm mailman”
mailman-join: “|/var/lib/mailman/mail/mailman join mailman”
mailman-leave: “|/var/lib/mailman/mail/mailman leave mailman”
mailman-owner: “|/var/lib/mailman/mail/mailman owner mailman”
mailman-request: “|/var/lib/mailman/mail/mailman request mailman”
mailman-subscribe: “|/var/lib/mailman/mail/mailman subscribe mailman”
mailman-unsubscribe: “|/var/lib/mailman/mail/mailman unsubscribe mailman”

Enterを押してMailmanオーナーに通知します… <– ENTER

root@server1:~#

その後、/etc/aliasesを開きます…

nano /etc/aliases

…そして次の行を追加します:

[...]  
## Mailmanメーリングリスト  
mailman:              "|/var/lib/mailman/mail/mailman post mailman"  
mailman-admin:        "|/var/lib/mailman/mail/mailman admin mailman"  
mailman-bounces:      "|/var/lib/mailman/mail/mailman bounces mailman"  
mailman-confirm:      "|/var/lib/mailman/mail/mailman confirm mailman"  
mailman-join:         "|/var/lib/mailman/mail/mailman join mailman"  
mailman-leave:        "|/var/lib/mailman/mail/mailman leave mailman"  
mailman-owner:        "|/var/lib/mailman/mail/mailman owner mailman"  
mailman-request:      "|/var/lib/mailman/mail/mailman request mailman"  
mailman-subscribe:    "|/var/lib/mailman/mail/mailman subscribe mailman"  
mailman-unsubscribe:  "|/var/lib/mailman/mail/mailman unsubscribe mailman"

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

systemctl restart postfix

次に、Mailmanデーモンを起動します:

systemctl restart mailman

ISPConfig 3をインストールした後、次のようにしてMailmanにアクセスできます:

ISPConfigアプリのvhostはnginxのポート8081でMailman構成を持っているため、http://server1.example.com:8081/cgi-bin/mailman/admin/またはhttp://server1.example.com:8081/cgi-bin/mailman/listinfo/を使用してMailmanにアクセスできます。

ウェブサイトからMailmanを使用したい場合、これはApacheよりも少し複雑です。nginxにはグローバルエイリアス(すべてのvhostに対して定義できるエイリアス)がないため、Mailmanにアクセスしたいvhostのためにこれらのエイリアスを定義する必要があります。

これを行うには、次の内容をISPConfigのウェブサイトのオプションタブのnginxディレクティブフィールドに貼り付けます:

        location /cgi-bin/mailman {
               root /usr/lib/;
               fastcgi_split_path_info (^/cgi-bin/mailman/[^/]*)(.*)$;
               include /etc/nginx/fastcgi_params;
               fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
               fastcgi_param PATH_INFO $fastcgi_path_info;
               fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
               fastcgi_intercept_errors on;
               fastcgi_pass unix:/var/run/fcgiwrap.socket;
        }

        location /images/mailman {
               alias /usr/share/images/mailman;
        }

        location /pipermail {
               alias /var/lib/mailman/archives/public;
               autoindex on;
        }

これは、あなたのvhostのために/cgi-bin/mailman/エイリアスを定義します。つまり、http:///cgi-bin/mailman/admin/でリストの管理インターフェースにアクセスでき、http:///cgi-bin/mailman/listinfo/でメーリングリストのユーザー用のウェブページを見つけることができます。

http:///pipermailでメーリングリストのアーカイブを見つけることができます。

13 PureFTPdとQuotaのインストール

PureFTPdとquotaは次のコマンドでインストールできます:

apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool

ファイル/etc/default/pure-ftpd-commonを編集します…

nano /etc/default/pure-ftpd-common

…そして、スタートモードがスタンドアロンに設定され、VIRTUALCHROOT=trueに設定されていることを確認します:

[...]  
STANDALONE_OR_INETD=standalone  
[...]  
VIRTUALCHROOT=true  
[...]  

次に、PureFTPdを構成してFTPおよびTLSセッションを許可します。FTPは非常に安全でないプロトコルであり、すべてのパスワードとすべてのデータが平文で転送されます。TLSを使用することで、通信全体を暗号化できるため、FTPははるかに安全になります。

FTPおよびTLSセッションを許可する場合は、次を実行します:

echo 1 > /etc/pure-ftpd/conf/TLS

TLSを使用するには、SSL証明書を作成する必要があります。私は/etc/ssl/private/に作成するため、まずそのディレクトリを作成します:

mkdir -p /etc/ssl/private/

その後、次のようにSSL証明書を生成できます:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

国名(2文字コード)[AU]: <– 国名を入力(例:「DE」)。
州または地域名(フルネーム)[Some-State]: <– 州または地域名を入力。
所在地名(例:都市)[]: <– 自分の都市を入力。
組織名(例:会社)[Internet Widgits Pty Ltd]: <– 組織名を入力(例:会社名)。
組織単位名(例:セクション)[]: <– Enterを押します。
共通名(例:サーバーFQDNまたはあなたの名前)[]: <– サーバーホスト名を入力します。私の場合は:server1.example.com
メールアドレス[]: <– Enterを押します。

SSL証明書の権限を変更します:

chmod 600 /etc/ssl/private/pure-ftpd.pem

次に、PureFTPdを再起動します:

systemctl restart pure-ftpd-mysql

/etc/fstabを編集します。私のは次のようになっています(/のマウントポイントを持つパーティションにusrjquota=quota.user、grpjquota=quota.group、jqfmt=vfsv0を追加しました):

nano /etc/fstab
# /etc/fstab: 静的ファイルシステム情報。  
#  
# 'blkid'を使用してデバイスのユニークな識別子を印刷します。  
# これはUUID=を使用してデバイスの名前を付けるより堅牢な方法です。  
# ディスクが追加または削除されても機能します。fstab(5)を参照してください。  
#  
# <ファイルシステム> <マウントポイント> <タイプ> <オプション> <ダンプ> <パス>  
# /はインストール中に/dev/sda1にありました  
UUID=45576b38-39e8-4994-b8c1-ea4870e2e614 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1  
# スワップはインストール中に/dev/sda5にありました  
UUID=8bea0d1e-ec37-4b20-9976-4b7daaa3eb69 none swap sw 0 0  
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0

クォータを有効にするには、次のコマンドを実行します:

mount -o remount /
quotacheck -avugm  
quotaon -avug

14 BIND DNSサーバーのインストール

BINDは次のようにインストールできます:

apt-get install bind9 dnsutils

サーバーが仮想マシンの場合、DNSSEC署名のためにより高いエントロピーを得るためにhavegedデーモンをインストールすることを強くお勧めします。非仮想サーバーでもhavegedをインストールできますが、問題はありません。

apt-get -y install haveged  
systemctl enable haveged  
systemctl start haveged

このトピックに関する説明はここにあります。

15 Webalizer、AWStats、およびGoAccessのインストール

WebalizerとAWStatsは次のようにインストールできます:

apt-get install webalizer awstats geoip-database libtimedate-perl libclass-dbi-mysql-perl

その後、/etc/cron.d/awstatsを開き…

nano /etc/cron.d/awstats

…そしてそのファイル内のすべてをコメントアウトします:

#MAILTO=root

#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh

# 静的レポートを生成:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh

最新のGoAccessバージョンをGoAccessリポジトリから直接インストールします:

echo "deb https://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list  
wget -O - https://deb.goaccess.io/gnugpg.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/goaccess.gpg add -  
apt-get update  
apt-get install goaccess

16 Jailkitのインストール

Jailkitは、SSHユーザーをchrootしたい場合にのみ必要です。次のようにインストールできます(重要:JailkitはISPConfigの前にインストールする必要があります。後からインストールすることはできません!):

apt-get install build-essential autoconf automake libtool flex bison debhelper binutils
cd /tmp  
wget http://olivier.sessink.nl/jailkit/jailkit-2.20.tar.gz  
tar xvfz jailkit-2.20.tar.gz  
cd jailkit-2.20  
echo 5 > debian/compat  
./debian/rules binary

次のようにしてJailkit.debパッケージをインストールできます:

cd ..  
dpkg -i jailkit_2.20-1_*.deb  
rm -rf jailkit-2.20*

17 Fail2banおよびUFWファイアウォールのインストール

これはオプションですが推奨されます。なぜなら、ISPConfigモニターがログを表示しようとするからです:

apt-get install fail2ban

Fail2banがPureFTPdおよびDovecotを監視できるようにするには、/etc/fail2ban/jail.localファイルを作成します:

nano /etc/fail2ban/jail.local
[pure-ftpd]  
enabled = true  
port = ftp  
filter = pure-ftpd  
logpath = /var/log/syslog  
maxretry = 3  
  
[dovecot]  
enabled = true  
filter = dovecot  
logpath = /var/log/mail.log  
maxretry = 5  
  
[postfix-sasl]  
enabled = true  
port = smtp  
filter = postfix[mode=auth]  
logpath = /var/log/mail.log  
maxretry = 3

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

systemctl restart fail2ban

UFWファイアウォールをインストールするには、次のaptコマンドを実行します:

apt-get install ufw

18 RoundCubeのインストール

次のコマンドでRoundCubeをインストールします:

apt-get install roundcube roundcube-core roundcube-mysql roundcube-plugins

インストーラーは次の質問をします:

dbconfig.commonでroundcubeのデータベースを構成しますか? <-- はい  
RoundCube用のMySQLアプリケーションパスワード: <-- Enterを押す  
データベースの管理ユーザーのパスワード: <-- ここにMySQLのrootパスワードを入力します。

次に、RoundCubeの/etc/roundcube/config.inc.phpファイルを編集し、いくつかの設定を調整します:

nano /etc/roundcube/config.inc.php

default_hostをlocalhost、smtp_serverを設定します。

$config['default_host'] = 'localhost';  
$config['smtp_server'] = 'localhost';  
$config['smtp_port']  = 25;

ISPConfigには、squirrelmail用のnginxアプリvhostにいくつかの構成があり、RoundCubeにも機能します。次のようにして有効にします:

ln -s /usr/share/roundcube /usr/share/squirrelmail

http://192.168.0.100:8081/webmail
http://server1.example.com:8081/webmail(ISPConfigをインストールした後、次の章を参照)

Nginx上のRoundcube

19 ISPConfig 3のインストール

ISPConfigのインストールを開始する前に、Apacheが停止していることを確認してください(インストールされている場合 - インストールされたパッケージのいくつかがApacheを依存関係としてインストールしている可能性がありますが、あなたは知らないかもしれません)。システムにApache2がすでにインストールされている場合は、今すぐ停止します…

systemctl stop apache2

…そしてApacheのシステム起動リンクを削除します:

update-rc.d -f apache2 remove

nginxが実行されていることを確認します:

systemctl start nginx

(Apacheとnginxの両方がインストールされている場合、インストーラーはどちらを使用するかを尋ねます:Apacheとnginxが検出されました。ISPConfigに使用するサーバーを選択してください:(apache、nginx)[apache]:

nginxと入力します。Apacheまたはnginxのいずれかがインストールされている場合、インストーラーによって自動的に検出され、質問はされません。)

最新のリリースバージョンからISPConfig 3.2をインストールするには、次のようにします:

cd /tmp  
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz  
tar xfz ISPConfig-3-stable.tar.gz  
cd ispconfig3_install/install/

次のステップは、次を実行することです:

php -q install.php

これにより、ISPConfig 3インストーラーが開始されます。インストーラーは、Postfix、Nginx、Dovecotなどのすべてのサービスを自動的に構成します。

# php -q install.php
  
--------------------------------------------------------------------------------  
_____ ___________ _____ __ _ ____  
|_ _/ ___| ___ \ / __ \ / _(_) /__ \  
| | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ /  
| | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ |  
_| |_\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \  
\___/\____/\_| \____/\___/|_| |_|_| |_\__, | \____/  
__/ |  
|___/  
--------------------------------------------------------------------------------
>> 初期設定
オペレーティングシステム:Debian 10.0 (Buster)または互換性のあるもの
次に、主要な設定のためのいくつかの質問が表示されるので注意してください。  
デフォルト値は[ブラケット]内にあり、で受け入れることができます。  
「quit」と入力すると、インストーラーを停止します。
  
言語を選択(en、de)[en]: <-- Enterを押す
インストールモード(standard、expert)[standard]: <-- Enterを押す
サーバーの完全修飾ホスト名(FQDN)、例:server1.domain.tld [server1.canomi.com]: <-- Enterを押す
MySQLサーバーホスト名 [localhost]: <-- Enterを押す
MySQLサーバーポート [3306]: <-- Enterを押す
MySQL rootユーザー名 [root]: <-- Enterを押す
MySQL rootパスワード []: <-- あなたのMySQL rootパスワードを入力します
作成するMySQLデータベース [dbispconfig]: <-- Enterを押す
MySQL文字セット [utf8]: <-- Enterを押す
Apacheとnginxが検出されました。ISPConfigに使用するサーバーを選択してください:(apache、nginx)[apache]: <-- nginx  
  
Postgreyの構成  
Postfixの構成  
4096ビットRSAプライベートキーを生成中  
.......................................................................++  
........................................................................................................................................++  
新しいプライベートキーを'smtpd.key'に書き込み中  
-----  
証明書リクエストに組み込まれる情報を入力するよう求められます。  
入力する内容は、識別名またはDNと呼ばれます。  
いくつかのフィールドがありますが、いくつかは空白のままにできます。  
いくつかのフィールドにはデフォルト値があります。  
'.'を入力すると、フィールドは空白のままになります。  
-----  
国名(2文字コード)[AU]: <-- 2文字の国コードを入力  
州または地域名(フルネーム)[Some-State]: <-- 州名を入力  
所在地名(例:都市)[]: <-- 自分の都市を入力  
組織名(例:会社)[Internet Widgits Pty Ltd]: <-- 会社名を入力またはEnterを押す  
組織単位名(例:セクション)[]: <-- Enterを押します  
共通名(例:サーバーFQDNまたはあなたの名前)[]: <-- サーバーホスト名を入力します。私の場合は:server1.example.com  
メールアドレス[]: <-- Enterを押します  
次の「追加」属性を入力してください  
証明書リクエストに送信されます  
チャレンジパスワード []: <-- Enterを押します  
オプションの会社名 []: <-- Enterを押します  
RSAキーを書き込み中
  
DBサーバーの構成  
ISPConfigのcrontabをインストール中  
no crontab for root  
no crontab for getmail  
IPアドレスを検出中  
サービスを再起動中...  
インストールが完了しました。

インストーラーはすべての基盤となるサービスを自動的に構成するため、手動での構成は必要ありません。

その後、http(s)://server1.example.com:8080/またはhttp(s)://192.168.1.100:8080/でISPConfig 3にアクセスできます(httpまたはhttpsは、インストール中に選択したものに依存します)。ユーザー名adminとパスワードadminでログインします(初回ログイン後にデフォルトのパスワードを変更する必要があります):

ISPConfigログインページ

Debian 10上のISPConfigダッシュボード

最後に、RoundCubeインストールのいくつかの権限を修正します。

chown root:ispapps /etc/roundcube/debian-db.php
chmod 640 /etc/roundcube/debian-db.php
chown root:ispapps /etc/roundcube/config.inc.php
chmod 640 /etc/roundcube/config.inc.php
chown -R ispapps:adm /var/log/roundcube
chmod -R 750 /var/log/roundcube
chown -R ispapps:ispapps /var/lib/roundcube/temp
chmod -R 750 /var/lib/roundcube/temp

システムは現在使用できる状態です。

ISPConfigとRoundCube Webmailを統合するためのプラグインがいくつか存在します。ISPConfig RoundCubeプラグインのインストール手順をこちらで確認してください。

20.1 ISPConfig 3マニュアル

ISPConfig 3の使い方を学ぶために、ISPConfig 3マニュアルをダウンロードすることを強くお勧めします。

300ページ以上にわたり、ISPConfigの背後にある概念(管理者、リセラー、クライアント)をカバーし、ISPConfig 3のインストールと更新方法を説明し、ISPConfig内のすべてのフォームとフォームフィールドのリファレンスを有効な入力の例と共に含め、ISPConfig 3の最も一般的なタスクに関するチュートリアルを提供します。また、サーバーをより安全にする方法を説明し、最後にトラブルシューティングセクションを提供します。

21 このチュートリアルの仮想マシンイメージのダウンロード

このチュートリアルは、VMWareおよびVirtualboxと互換性のあるovf/ova形式の使用準備が整った仮想マシンイメージとして利用可能です。仮想マシンイメージは次のログイン詳細を使用します:

SSH / シェルログイン

ユーザー名:administrator
パスワード:howtoforge

ユーザー名:root
パスワード:howtoforge

ISPConfigログイン

ユーザー名:admin
パスワード:howtoforge

MySQLログイン

ユーザー名:root
パスワード:howtoforge

VMのIPは192.168.0.100で、/etc/network/interfacesファイルで変更できます。上記のすべてのパスワードを変更して仮想マシンを保護してください。

22 リンク

Share: X/Twitter LinkedIn

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

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