完美服务器 - Debian 9(Nginx,BIND,Dovecot,ISPConfig 3.1)

本教程演示了如何准备Debian 9(Stretch)服务器(使用Nginx,BIND,Dovecot)来安装ISPConfig,以及如何安装ISPCo ...

完美服务器 - Debian 9(Nginx,BIND,Dovecot,ISPConfig 3.1)

本教程演示了如何准备Debian 9服务器(使用Nginx,BIND,Dovecot)来安装ISPConfig 3.1 ,以及如何安装ISPConfig 3.1。 ISPConfig 3是一个虚拟主机控制面板,允许您通过Web浏览器配置以下服务:Apache或nginx Web服务器,Postfix邮件服务器,Courier或Dovecot IMAP / POP3服务器,MySQL,BIND或MyDNS域名服务器,PureFTPd,SpamAssassin, ClamAV等等。 此设置涵盖了Nginx Web服务器,BIND作为DNS服务器,以及Dovecot作为IMAP / POP3服务器。

1初步说明

在本教程中,我使用IP地址为192.168.1.100和网关192.168.1.1的主机名server1.example.com 。 这些设置可能会有所不同,因此您必须在适当的位置替换它们。 在继续进行之前,您需要安装最少的Debian 9.这可能是您的托管服务提供商提供的Debian最小映像,或者您使用 Minimal Debian Server 教程来设置基本系统。

2安装SSH服务器

如果您在系统安装期间未安装OpenSSH服务器,则可以立即执行此操作:

apt-get -y install ssh openssh-server

从现在开始,您可以使用SSH客户端(例如PuTTY),并从工作站连接到Debian 9服务器,并遵循本教程的其余步骤。

3安装shell文本编辑器(可选)

我将在本教程中 使用 nano 文本编辑器。 有些用户更喜欢经典的vi编辑器,因此我会在这里安装两个编辑器。 默认的 vi 程序在Debian和Ubuntu上有一些奇怪的行为; 为了解决这个问题,我们安装 vim-nox

apt-get -y install nano vim-nox

(如果您使用不同的文本编辑器,如joe,则不必这样做。)

4配置主机名

您的服务器的主机名应该是像“server1.example.com”这样的子域名。 不要使用没有子域名部分的域名,如“example.com”作为主机名,因为这将在以后使用邮件设置时导致问题。 首先,您应该检查 / etc / hosts中 的主机名, 并在必要时进行更改。 该行应该是:“IP地址 - 空间 - 完整主机名,包括域 - 空间 - 子域部分”。 E dit / etc / hosts 。 让它看起来像这样:

nano /etc/hosts

127.0.0.1       localhost.localdomain   localhost
192.168.1.100   server1.example.com     server1

# The following lines are desirable for IPv6 capable hosts
::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包含延伸/更新存储库(这确保您始终获得ClamAV病毒扫描程序的最新更新 - 该项目经常发布版本,有时旧版本会停止工作),并且启用了contribnon-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

重要提示:如上所示添加Debian Backports存储库。

apt-get update

更新apt软件包数据库和

apt-get upgrade

安装最新的更新(如果有的话)。

6更改默认外壳

/ bin / sh/ bin / dash的符号链接,但我们需要/ bin / bash ,而不是/ bin / dash 。 因此我们这样做:

dpkg-reconfigure dash

使用短划线作为默认的系统shell(/ bin / sh)? < - 没有

如果你不这样做,ISPConfig安装将失败。

7同步系统时钟

通过Internet将系统时钟与NTP(网络时钟协议)服务器同步是一个好主意。 只需运行

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

您将被问到以下问题:

邮件配置的一般类型: < - Internet站点
系统邮件名称: < - server1.example.com

要保护MariaDB / MySQL安装并禁用测试数据库,请运行以下命令:

mysql_secure_installation

我们不必更改MySQL根密码,因为我们只是在安装过程中设置了新密码。 回答如下问题:

Change the root password? [Y/n] <-- y
New password: <-- Enter a new MySQL root password
Re-enter new password: <-- Repeat the MySQL root password
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Remove test database and access to it? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y

接下来,在Postfix中打开TLS / SSL和提交端口:

nano /etc/postfix/master.cf

取消注释提交smtps部分如下(留下-o milter_macro_daemon_name = ORIGINATING,因为我们不需要它):

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

我们希望MariaDB监听所有接口,而不仅仅是本地主机,因此我们编辑/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

[...]

# Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. #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密码。

nano /etc/mysql/debian.cnf

需要添加的MySQL根密码显示为红色,在本例中,密码为“howtoing”。

# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = root
password = howtoing
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = root
password = howtoing
socket = /var/run/mysqld/mysqld.sock
basedir = /usr

为了防止“ 接受中错误:太多打开的文件错误,我们现在将为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 postgrey

ISPConfig 3安装程序使用amavisd在内部加载SpamAssassin过滤器库,因此我们可以停止SpamAssassin释放一些RAM:

service spamassassin stop
systemctl disable spamassassin

9.1安装Beats器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 luarocks

luarocks install lpc

为Beats器添加一个shell用户。

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

将Beats器下载到/ opt目录并编译它。

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

Beats器现在被安装到/ opt /Beats器。