サーバー設定 · 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/hosts127.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.com5 Debianインストールの更新
まず、/etc/apt/sources.listにbuster/updatesリポジトリが含まれていることを確認します(これにより、ClamAVウイルススキャナーの最新の更新を常に受け取ることができます。このプロジェクトは非常に頻繁にリリースを公開し、時には古いバージョンが動作しなくなることがあります)、およびcontribおよびnon-freeリポジトリが有効になっていることを確認します。
nano /etc/apt/sources.listdeb 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_installationMariaDBの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 restartMariaDBが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 postgreyISPConfig 3のセットアップはamavisdを使用し、内部でSpamAssassinフィルタライブラリをロードするため、RAMを解放するためにSpamAssassinを停止できます:
systemctl stop spamassassin
systemctl disable spamassassin10 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-fpmPHP-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-fpmnginxで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.phpnanoエディタで設定ファイルを開きます:
nano /usr/share/phpmyadmin/config.inc.php32文字の長さの安全なパスワード(ブローフィッシュシークレット)を設定します:
$cfg['blowfish_secret'] = 'bD3e6wva9fnd93jVsb7SDgeiBCd452Dh'; /* COOKIE AUTHのためにこれを入力する必要があります! */私の例のブローフィッシュシークレットを使用せず、自分のものを設定してください!
次に、PHPMyAdminが一時ファイルを保存するために使用するディレクトリを設定する行を追加します:
$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';次のステップでは、phpMyadminの設定ストア(データベース)を構成します。
rootユーザーとしてMariaDBにログインします:
mysql -u root -pMariaDBシェルで、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 -s12 Mailmanのインストール
ISPConfigを使用すると、Mailmanのメーリングリストを管理(作成/変更/削除)できます。この機能を利用したい場合は、次のようにMailmanをインストールします:
apt-get install mailman少なくとも1つの言語を選択します。例:
サポートする言語: <– en(英語)
不足しているサイトリスト <– OK
Mailmanを開始する前に、mailmanという名前の最初のメーリングリストを作成する必要があります:
newlist mailmanroot@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 mailmanISPConfig 3をインストールした後、次のようにしてMailmanにアクセスできます:
ISPConfigアプリのvhostはnginxのポート8081でMailman構成を持っているため、http://server1.example.com:8081/cgi-bin/mailman/admin/
ウェブサイトから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://
http://
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/TLSTLSを使用するには、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 -avug14 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 goaccess16 Jailkitのインストール
Jailkitは、SSHユーザーをchrootしたい場合にのみ必要です。次のようにインストールできます(重要:JailkitはISPConfigの前にインストールする必要があります。後からインストールすることはできません!):
apt-get install build-essential autoconf automake libtool flex bison debhelper binutilscd /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 fail2banFail2banが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 fail2banUFWファイアウォールをインストールするには、次のaptコマンドを実行します:
apt-get install ufw18 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.phpdefault_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/squirrelmailhttp://192.168.0.100:8081/webmail
http://server1.example.com:8081/webmail(ISPConfigをインストールした後、次の章を参照)

19 ISPConfig 3のインストール
ISPConfigのインストールを開始する前に、Apacheが停止していることを確認してください(インストールされている場合 - インストールされたパッケージのいくつかがApacheを依存関係としてインストールしている可能性がありますが、あなたは知らないかもしれません)。システムにApache2がすでにインストールされている場合は、今すぐ停止します…
systemctl stop apache2…そしてApacheのシステム起動リンクを削除します:
update-rc.d -f apache2 removenginxが実行されていることを確認します:
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でログインします(初回ログイン後にデフォルトのパスワードを変更する必要があります):


最後に、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 リンク
- Debian: http://www.debian.org/
- ISPConfig: http://www.ispconfig.org/
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。