安装和配置 Postfix 和 Dovecot

2023-11-05

这是我们的第二篇文章设置和配置邮件服务器系列。在这篇文章中,我们将向您展示如何安装和配置 Postfix 和 Dovecot,这是我们邮件系统的两个主要组件。

Postfix 是一个开源邮件传输代理 (MTA),是一种用于发送和接收电子邮件的服务。 Dovecot 是一个 IMAP/POP3 服务器,在我们的设置中,它还将处理本地交付和用户身份验证。

本教程是为 Ubuntu 16.04 编写的,但是经过少量修改的相同步骤应该适用于任何较新的版本Ubuntu 版本 .

先决条件#

在继续本教程之前,请确保您以以下身份登录具有 sudo 权限的用户 .

安装 Postfix 和 Dovecot#

Ubuntu 默认存储库中的 Dovecot 软件包已过时。为了利用imap_sieve在模块中,我们将从 Dovecot 社区存储库安装 Dovecot。

使用以下命令将存储库 GPG 密钥添加到您的 apt 源密钥环wget命令 :

wget -O- https://repo.dovecot.org/DOVECOT-REPO-GPG | sudo apt-key add -

使用以下命令启用 Dovecot 社区存储库:

echo "deb https://repo.dovecot.org/ce-2.3-latest/ubuntu/$(lsb_release -cs) $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/dovecot.list
sudo apt updatesudo debconf-set-selections <<< "postfix postfix/mailname string $(hostname -f)"sudo debconf-set-selections <<< "postfix postfix/main_mailer_type string 'Internet Site'"sudo apt install postfix postfix-mysql dovecot-imapd dovecot-lmtpd dovecot-pop3d dovecot-mysql

后缀配置#

我们将设置 Postfix 以使用虚拟邮箱和域。

首先创建sql配置文件将指示 postfix 如何访问MySQL数据库,创建于本系列的第一部分 .

sudo mkdir -p /etc/postfix/sql

打开文本编辑器并创建以下文件:

/etc/postfix/sql/mysql_virtual_domains_maps.cf
user = postfixadmin
password = P4ssvv0rD
hosts = 127.0.0.1
dbname = postfixadmin
query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'
/etc/postfix/sql/mysql_virtual_alias_maps.cf
user = postfixadmin
password = P4ssvv0rD
hosts = 127.0.0.1
dbname = postfixadmin
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf
user = postfixadmin
password = P4ssvv0rD
hosts = 127.0.0.1
dbname = postfixadmin
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
user = postfixadmin
password = P4ssvv0rD
hosts = 127.0.0.1
dbname = postfixadmin
query  = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
/etc/postfix/sql/mysql_virtual_mailbox_maps.cf
user = postfixadmin
password = P4ssvv0rD
hosts = 127.0.0.1
dbname = postfixadmin
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
user = postfixadmin
password = P4ssvv0rD
hosts = 127.0.0.1
dbname = postfixadmin
query = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'

创建 SQL 配置文件后,更新主后缀配置文件以包含有关存储在 SQL 配置文件中的虚拟域、用户和别名的信息。MySQL数据库 .

sudo postconf -e "virtual_mailbox_domains = mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf"sudo postconf -e "virtual_alias_maps = mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf"sudo postconf -e "virtual_mailbox_maps = mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf"
postconf 命令显示配置参数的实际值、更改配置参数值或显示有关 Postfix 邮件系统的其他配置信息。

本地投递代理会将收到的电子邮件投递到用户的邮箱。运行以下命令将 Dovecot 的 LMTP 服务设置为默认邮件传送传输:

sudo postconf -e "virtual_transport = lmtp:unix:private/dovecot-lmtp"

使用之前生成的 Let’s encrypt SSL 证书设置 TL 参数:

sudo postconf -e 'smtp_tls_security_level = may'sudo postconf -e 'smtpd_tls_security_level = may'sudo postconf -e 'smtp_tls_note_starttls_offer = yes'sudo postconf -e 'smtpd_tls_loglevel = 1'sudo postconf -e 'smtpd_tls_received_header = yes'sudo postconf -e 'smtpd_tls_cert_file = /etc/letsencrypt/live/mail.linuxize.com/fullchain.pem'sudo postconf -e 'smtpd_tls_key_file = /etc/letsencrypt/live/mail.linuxize.com/privkey.pem'

配置经过身份验证的 SMTP 设置并将身份验证移交给 Dovecot:

sudo postconf -e 'smtpd_sasl_type = dovecot'sudo postconf -e 'smtpd_sasl_path = private/auth'sudo postconf -e 'smtpd_sasl_local_domain ='sudo postconf -e 'smtpd_sasl_security_options = noanonymous'sudo postconf -e 'broken_sasl_auth_clients = yes'sudo postconf -e 'smtpd_sasl_auth_enable = yes'sudo postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'

我们还需要编辑 Postfix 主配置文件master.cf并启用提交端口(587)和 smtps 端口(465).

使用您的打开文件文本编辑器并取消注释/编辑以下行:

/etc/postfix/master.cf
submission inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_reject_unlisted_recipient=no
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -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_reject_unlisted_recipient=no
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -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 服务以使更改生效。

sudo systemctl restart postfix

至此您已经成功配置Postfix服务。

配置鸽舍#

在本节中,我们将配置 Dovecot 以匹配我们的设置。确保编辑以黄色突出显示的行。

首先配置dovecot-sql.conf.ext文件,指示 Dovecot 如何访问数据库以及如何查找有关电子邮件帐户的信息。

/etc/dovecot/dovecot-sql.conf.ext
driver = mysql
connect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=P4ssvv0rD
default_pass_scheme = MD5-CRYPT
iterate_query = SELECT username AS user FROM mailbox
user_query = SELECT CONCAT('/var/mail/vmail/',maildir) AS home, \
  CONCAT('maildir:/var/mail/vmail/',maildir) AS mail, \
  5000 AS uid, 5000 AS gid, CONCAT('*:bytes=',quota) AS quota_rule \
  FROM mailbox WHERE username = '%u' AND active = 1
password_query = SELECT username AS user,password FROM mailbox \
  WHERE username = '%u' AND active='1'

不要忘记使用正确的 MySQL 凭据(数据库名称、用户和密码)。

接下来,编辑conf.d/10-mail.conf文件并编辑以下变量:

/etc/dovecot/conf.d/10-mail.conf
...
mail_location = maildir:/var/mail/vmail/%d/%n
...
mail_uid = vmail
mail_gid = vmail
...
first_valid_uid = 5000
last_valid_uid = 5000
...
mail_privileged_group = vmail
...
mail_plugins = quota
...

要进行身份验证,请打开conf.d/10-auth.conf,编辑以下行并包含auth-sql.conf.ext file:

/etc/dovecot/conf.d/10-auth.conf
...
disable_plaintext_auth = yes
...
auth_mechanisms = plain login
...
#!include auth-system.conf.ext
!include auth-sql.conf.ext
...

打开conf.d/10-master.conf文件,并修改如下:

/etc/dovecot/conf.d/10-master.conf
...
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    mode = 0600
    user = postfix
    group = postfix
  }
...
}
...
service auth {
  ...
  unix_listener auth-userdb {
    mode = 0600
    user = vmail
    group = vmail
  }
  ...
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
  ...
}
...
service auth-worker {
  user = vmail
}
...
service dict {
  unix_listener dict {
    mode = 0660
    user = vmail
    group = vmail
  }
}
...

打开conf.d/10-ssl.conf并启用 SSL/TLS。

/etc/dovecot/conf.d/10-ssl.conf
...
ssl = yes
...
ssl_cert = </etc/letsencrypt/live/mail.linuxize.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.linuxize.com/privkey.pem
ssl_dh = </etc/ssl/certs/dhparam.pem
...
ssl_cipher_list = EECDH+AES:EDH+AES+aRSA
...
ssl_prefer_server_ciphers = yes
...
确保使用 SSL 证书文件的正确路径。

如果您从一开始就关注本系列,那么您应该已经掌握了fullchain.pem, privkey.pem, dhparam.pem在您的服务器上创建的文件。有关如何创建免费的 Let's encrypt SSL 证书和 Diffie–Hellman 密钥的更多信息,请查看此内容tutorial .

谢谢Nevyn注意到问题并提供解决方案。

打开conf.d/20-imap.conf文件并激活imap_quota plugin:

/etc/dovecot/conf.d/20-imap.conf
...
protocol imap {
  ...
  mail_plugins = $mail_plugins imap_quota
  ...
}
...

打开conf.d/20-lmtp.conf文件并按如下方式编辑:

/etc/dovecot/conf.d/20-lmtp.conf
...
protocol lmtp {
  postmaster_address = postmaster@linuxize.com
  mail_plugins = $mail_plugins
}
...

定义默认邮箱conf.d/15-mailboxes.conf file:

/etc/dovecot/conf.d/15-mailboxes.conf
...
mailbox Drafts {
  special_use = \Drafts
}
mailbox Spam {
  special_use = \Junk
  auto = subscribe
}
mailbox Junk {
  special_use = \Junk
}
...

有两种不同类型的配额大小,一种是为整个域设置的,另一种是为每个用户邮箱设置的。在本系列的前一部分中,我们已经在 PostfixAdmin 中启用了配额支持,这意味着配额信息将存储在 PostfixAdmin 数据库中。

现在我们需要配置 Dovecot 连接到数据库,处理配额限制并运行一个脚本,当用户的配额超过指定限制时向用户发送邮件。为此,请打开conf.d/90-quota.conf文件并修改如下:

/etc/dovecot/conf.d/90-quota.conf
plugin {
  quota = dict:User quota::proxy::sqlquota
  quota_rule = *:storage=5GB
  quota_rule2 = Trash:storage=+100M
  quota_grace = 10%%
  quota_exceeded_message = Quota exceeded, please contact your system administrator.
  quota_warning = storage=100%% quota-warning 100 %u
  quota_warning2 = storage=95%% quota-warning 95 %u
  quota_warning3 = storage=90%% quota-warning 90 %u
  quota_warning4 = storage=85%% quota-warning 85 %u
}

service quota-warning {
  executable = script /usr/local/bin/quota-warning.sh
  user = vmail

  unix_listener quota-warning {
    group = vmail
  	mode = 0660
  	user = vmail
  }
}

dict {
  sqlquota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
}

我们还需要告诉 dovecot 如何访问配额 SQL 字典。打开dovecot-dict-sql.conf.ext文件并编辑以下行:

/etc/dovecot/dovecot-dict-sql.conf.ext
...
connect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=P4ssvv0rD
...
map {
  pattern = priv/quota/storage
  table = quota2
  username_field = username
  value_field = bytes
}
map {
  pattern = priv/quota/messages
  table = quota2
  username_field = username
  value_field = messages
}
...
# map {
#   pattern = shared/expire/$user/$mailbox
#   table = expires
#   value_field = expire_stamp
#
#   fields {
#     username = $user
#     mailbox = $mailbox
#   }
# }
...
确保使用正确的 MySQL 凭据(数据库名称、用户和密码)。

创建以下 shell 脚本,如果用户的配额超过指定限制,该脚本将向用户发送电子邮件:

/usr/local/bin/quota-warning.sh
#!/bin/sh
PERCENT=$1
USER=$2
cat << EOF | /usr/lib/dovecot/dovecot-lda -d $USER -o "plugin/quota=dict:User quota::noenforcing:proxy::sqlquota"
From: postmaster@linuxize.com
Subject: Quota warning

Your mailbox is now $PERCENT% full.
EOF

通过运行以下命令使脚本可执行chmod命令:

sudo chmod +x /usr/local/bin/quota-warning.sh

最后重新启动 dovecot 服务以使更改生效。

sudo systemctl restart dovecot

结论#

现在您应该拥有一个功能齐全的邮件系统。在本系列的下一部分中,我们将向您展示如何安装并集成 Rspamd .

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

安装和配置 Postfix 和 Dovecot 的相关文章

  • 如何在 Fedora Linux 上安装 Skype

    Skype 是一个流行的通信平台 提供即时消息 语音和视频通话以及屏幕共享和文件传输功能 它广泛用于个人和专业目的 尽管 Skype 在官方 Fedora 存储库中不可用 但仍然可以使用第三方存储库或通过手动下载并安装 RPM 包将其安装在
  • 如何在 Ubuntu 18.04 和 16.04 LTS 上安装 MariaDB 10

    MariaDBia 是 MySQL 的增强型 直接替代品 对于寻找数据库专业人士来说 MariaDB 可能是更好的选择robust scalable and reliableSQL 服务器 MariaDB 相对于 MySQL 有许多更新的功
  • 如何在 CentOS、RedHat 和 Fedora 上安装 Ajenti 控制面板

    Ajenti 是一个基于 Web 的控制面板 用于管理系统 如 Webmin cPanel 它有一个非常漂亮且用户友好的界面 对于个人使用 Ajenti 可根据 AGPLv3 免费使用 对于商业用途 您必须定期支付少量费用 本文将帮助您在
  • 如何在 Fedora 和 CentOS 上安装 Opera

    Opera 是一种流行的网络浏览器 拥有大量用户 它是一款安全 快速的网络浏览器 适用于移动和桌面系统 该浏览器提供内置 VPN 以确保用户安全浏览 您可以直接从其官方网站下载Opera网页浏览器RPM包 此外 它还可以使用 Snap 包进
  • C 程序将两个数字相加

    在本文中 我们将深入研究 C 语言编程的实践方面 特别关注一个基本操作 两个数字相加 虽然它看起来很基础 但它是理解更大 更复杂的程序的基石 C 中两个数相加 在 C 语言中添加两个数字是一项简单的任务 通常是初学者了解该语言的语法和结构的
  • 如何在 Ubuntu 20.04 上安装 Redis

    Redis 是一种内存数据结构存储 用作数据库服务器 缓存和消息代理 Redis是用C编程语言编写的 它还提供了一个 PHP 模块 用于 PHP 脚本与 Redis 服务器之间的通信 本教程将帮助您在 Ubuntu 20 04 LTS 系统
  • 如何在 Debian 10 (Buster) 上安装 Java

    Java 是一种流行的编程语言 有数十亿的应用程序使用 我们知道 Oracle JDK 需要 Oracle 二进制代码许可协议下的商业许可 我们将在您的 Debian 系统上安装 OpenJDK OpenJDK 是完全免费的开源 Java
  • 如何使用 Imapsync 在 IMAP 服务器之间传输邮箱

    什么是 Imapsync Imapsync 是一种 IMAP 传输工具 用于将邮箱和电子邮件从一个 IMAP 服务器传输到另一个 IMAP 服务器 Imapsync 应用程序是一种命令行工具 允许增量和递归 IMAP 从一个邮箱传输到另一个
  • 如何在 Ubuntu 18.04、16.04 上安装和配置 OpenVPN 服务器

    VPN 或虚拟专用网络是一组通过公共网络 Internet 连接到专用网络的计算机 如今 安全性是每个人最关心的问题 在公共网络上工作时更需要安全性 就像您在远程位置有一组计算机一样 现在您需要将这些计算机作为系统中的 LAN 网络进行访问
  • 如何在 Ubuntu 22.04 上安装和使用 Monit

    Monit 是一个多功能且功能强大的开源实用程序 用于管理和监控基于 Unix 的系统 它可用于监视系统资源 服务和应用程序 使您能够确保它们以最佳状态运行并保持可用 Monit 还可以配置为自动重新启动服务并在满足某些条件时发送通知 在本
  • 使用 Python FastAPI 和 MySQL

    FastAPI 是一个现代 快速 高性能 的 Web 框架 用于使用 Python 构建 API 它基于标准 Python 类型提示构建 使其易于使用 同时为开发人员提供了许多高级功能 构建 FastAPI 应用程序时 为了安全性和模块化
  • 如何在 CentOS 8 上配置静态 IP 地址

    问题 如何在 CentOS 8 上更改或配置 IP 地址 在 CentOS 桌面系统上设置静态 IP 地址的步骤 截至今天 CentOS 8 Linux 操作系统是 CentOS 的最新可用版本 桌面提供了一个有吸引力的 GUI 来使用它
  • Java 开发人员的重要代码格式化技巧

    Java 代码格式化是编写干净 可读和可维护代码的一个重要方面 在整个团队或组织中采用一套一致的格式化规则将显着提高代码库的整体质量 使开发人员更容易理解 修改和调试代码 本文将概述 Java 代码格式化最佳实践 讨论开发人员可以用来增强代
  • 如何在 Fedora 35/34/33 上安装 Erlang

    Erlang是一种编程语言 用于构建具有高可用性要求的大规模可扩展的软实时系统 Erlang运行时系统内置了对并发 分布式和容错的支持 本教程将帮助您在 Fedora Linux 系统上安装 erlang 步骤 1 在 Fedora 上安装
  • 如何在 Ubuntu 和 Debian 上设置 Squid 代理服务器

    如果您正在寻找一种增强 Debian 服务器安全性和性能的方法 那么设置 Squid 代理服务器可能是一个不错的选择 Squid 是一种广泛使用的开源代理服务器 提供缓存 过滤和身份验证等各种功能 在本文中 我们将讨论在 Ubuntu 和基

随机推荐

  • 如何在 CentOS 8 上安装和配置 VNC

    虚拟网络计算 VNC 是一种图形桌面共享系统 允许您使用键盘和鼠标远程控制另一台计算机 本文介绍了在 CentOS 8 上安装和配置 VNC 服务器的步骤 我们还将向您展示如何通过 SSH 隧道安全地连接到 VNC 服务器 先决条件 要遵循
  • Linux 中的日期命令

    在本教程中 我们将介绍以下基础知识date命令 The date命令显示或设置系统日期 它最常用于以不同格式打印日期和时间以及计算未来和过去的日期 使用Linuxdate命令 语法为date命令如下 date OPTION FORMAT 要
  • 如何在 CentOS 8 上安装 OpenCV

    OpenCV 开源计算机视觉库 是一个开源计算机视觉库 绑定了 C Python 和 Java 并支持所有主要操作系统 它可以利用多核处理并具有 GPU 加速功能来实现实时操作 OpenCV 的应用非常广泛 包括医学图像分析 拼接街景图像
  • 如何在 Linux 中设置和列出环境变量

    在基于 Linux 和 Unix 的系统中 环境变量是一组动态命名值 存储在系统中 供在 shell 或子 shell 中启动的应用程序使用 简而言之 环境变量是具有名称和关联值的变量 环境变量允许您自定义系统的工作方式以及系统上应用程序的
  • 如何在 Debian 10 上安装 Gradle

    Gradle 是一个强大而灵活的构建工具 主要用于 Java 项目 结合了 Ant 和Maven 与使用 XML 进行脚本编写的前辈不同 Gradle 使用Groovy 一种动态的 面向对象的编程语言 用于 Java 平台定义项目和构建脚本
  • 如何在 Linux、Windows 和 macOS 上编辑 Hosts 文件

    Hosts 文件用于将域名 主机名 映射到 IP 地址 它是所有操作系统 包括 Linux Windows 和 macOS 都使用的纯文本文件 主机文件的优先级高于 DNS 当您输入要访问的网站的域名时 必须将域名转换为其相应的IP地址 操
  • Bash 连接字符串

    最常用的字符串操作之一是连接 字符串连接只是一个奇特的编程术语 用于通过将一个字符串附加到另一个字符串的末尾来将字符串连接在一起 在本教程中 我们将解释如何在 Bash 中连接字符串 连接字符串 连接两个或多个字符串变量的最简单方法是将它们
  • 如何在 Debian 9 上安装和使用 Docker Compose

    Docker 组合是一个允许您定义和编排多容器 Docker 应用程序的工具 它使用 YAML 文件来配置应用程序的容器 网络和卷 Compose 可用于多种目的 单主机应用程序部署 自动化测试和本地开发是 Docker Compose 最
  • 如何在 Debian 10 Linux 上安装 Apache Web 服务器

    Apache HTTP 服务器是世界上最流行的 Web 服务器之一 它是一个开源 跨平台的 HTTP 服务器 为大部分互联网网站提供支持 Apache 提供了许多强大的功能 可以通过附加模块进行扩展 在本教程中 我们将解释如何在 Debia
  • 如何在 Debian 9 上安装 PHP

    Debian 9 附带的 PHP 7 0 版本很快就会停止支持 并且不再接收安全更新 在本教程中 我们将引导您完成在 Debian 9 服务器上安装 PHP 7 2 的步骤 我们还将向您展示如何配置 Apache 和 Nginx 来运行 P
  • 如何在 Debian 9 上使用 VSFTPD 设置 FTP 服务器

    FTP 文件传输协议 是一种标准网络协议 用于在远程网络之间传输文件 为了更安全 更快速的数据传输 请使用SCP or SFTP 有许多可用于 Linux 的开源 FTP 服务器 最流行和最广泛使用的是PureFTPd ProFTPD an
  • Linux 中的 Xargs 命令

    The xargs实用程序允许您从标准输入构建和执行命令 它通常通过管道与其他命令结合使用 With xargs 您可以提供标准输入作为命令行实用程序的参数 例如mkdir and rm 在本教程中 我们将介绍使用xargs命令 如何使用L
  • 如何在 Ubuntu 18.04 上安装 Chromium Web 浏览器

    Chromium是一款专为现代网络打造的快速 稳定且安全的浏览器 它是许多浏览器的基础 包括世界上使用最广泛的网络浏览器谷歌浏览器 Chromium 和 Google Chrome 之间的主要区别在于 Chromium 是开源的 与 Chr
  • 如何在 Raspberry Pi 上安装 Node.js 和 npm

    Node js 是一个基于 Chrome 的 JavaScript 引擎构建的开源跨平台 JavaScript 运行时环境 允许服务器端执行 JavaScript 代码 它主要用于构建服务器端应用程序 但作为全栈和前端解决方案也非常流行 n
  • 如何在 Debian 9 上安装 Tomcat 9

    Apache Tomcat 是一个开源应用程序服务器 支持 Java Servlet JavaServer Pages Java 表达式语言和 Java WebSocket 技术 它是当今世界上使用最广泛的应用程序和 Web 服务器之一 本
  • 如何在 Ubuntu 18.04 上安装 PrestaShop

    普斯塔商店是一个免费开源的电子商务平台 它基于 PHP 和 MySQL 可以通过免费和高级插件和主题进行扩展 PrestaShop 具有直观的管理界面 多个支付网关 多语言 分析和报告等功能 是许多在线商家的首选平台 在本教程中 我们将向您
  • 如何在 Ubuntu 18.04 上安装 Jenkins

    Jenkins是一个开源自动化服务器 提供了一种设置持续集成和持续交付 CI CD 管道的简单方法 持续集成 CI 是一种 DevOps 实践 团队成员定期将代码更改提交到版本控制存储库 然后运行自动化构建和测试 持续交付 CD 是自动构建
  • 如何在 CentOS 7 上安装 Yarn

    Yarn 是一个与 npm 兼容的 JavaScript 包管理器 可帮助您自动执行安装 更新 配置和删除 npm 包的过程 它的创建是为了解决 npm 的一系列问题 例如通过并行操作加快软件包安装过程并减少与网络连接相关的错误 在本教程中
  • Linux 中的 Pgrep 命令

    本文涵盖了 Linux 的基础知识pgrep命令 pgrep是一个命令行实用程序 允许您根据给定条件查找正在运行的程序的进程 ID 它可以是完整或部分进程名称 运行进程的用户或其他属性 The pgrep命令是的一部分procps or p
  • 安装和配置 Postfix 和 Dovecot

    这是我们的第二篇文章设置和配置邮件服务器系列 在这篇文章中 我们将向您展示如何安装和配置 Postfix 和 Dovecot 这是我们邮件系统的两个主要组件 Postfix 是一个开源邮件传输代理 MTA 是一种用于发送和接收电子邮件的服务