Ubuntu搭建强健的邮箱服务器(四)

本文详细介绍了Postfix与Dovecot的集成,包括Dovecot的功能、配置命令、不同格式的邮件存储、SSL/TLS加密、用户认证、数据库管理以及安全设置。涉及从基础安装到高级配置的全面内容。
摘要由CSDN通过智能技术生成

这节我来讲Postfix的黄金搭档Dovecot。Dovecot是一个邮件管理器,它的功能很多,可以担负起大部的日常管理功能。

Dovecot服务

相关操作命令
  1. 查看配置参数
doveconf
  1. 查看特定配置参数的值
doveconf <参数名称>
## 如:
doveconf mail_location
  1. 查看配置的有效性
    这个命令查看当前所有已配置的所有参数
doveconf -n
  1. 以指定的参数测试参数的有效性(并没有真正更改配置文件)
doveconf -n -c /etc/dovecot/dovecot.conf mail_location=maildir:~/Maildir
Dovecot的安装
sudo apt install dovecot-core dovecot-imapd dovecot-lmtpd dovecot-mysql dovecot-pop3d dovecot-sieve dovecot-managesieved
配置dovecot.conf

创建管理用户:

groupadd -g 5000 adminmail
useradd -g adminmail -u 5000 adminmail -d /var/mail
chown -R adminmail:adminmail /var/mail

编辑Dovecot主配置文件:

sudo nano /etc/dovecot/dovecot.conf

## 确保以下设置正确
disable_plaintext_auth = no
mail_privileged_group = mail

## mail_location = mbox:~/mail:INBOX=/var/mail/%u
## 使用了 mbox 格式的存储,它将所有邮件存储在一个单独的文件中。
## :INBOX= 指定了 INBOX 的位置。
## %u 是用户的用户名的占位符,它将被实际的用户名替换。
## 邮件存储的位置为 ~/mail 目录。
## 这种格式通常适用于较小的邮件存储需求,但不如 maildir 格式灵活,特别是在多用户同时写入的情况下。

mail_location = maildir:/var/mail/%d/%n
## 使用了 maildir 格式的存储,它将每封邮件存储为一个单独的文件。
## %d 是域名的占位符,%n 是用户名的占位符。
## 邮件存储的位置为 /var/mail/域名/用户名 目录。
## 这种格式更加适用于多用户、高并发写入的情况,因为它避免了 mbox 格式的锁定问题,
## 每封邮件都是一个独立的文件。

## 启用SSL认证
ssl = yes
ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem
ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem

userdb {
  driver = static
  args = uid=adminmail gid=adminmail home=/var/mail/%d/%n
}
## 如果这里启用mysql来配置的话,则示例如下:
# userdb {
#   driver = sql
#   args = /etc/dovecot/dovecot-sql.conf.ext
# }
# /etc/dovecot/dovecot-sql.conf.ext
# driver = mysql
# connect = host=localhost dbname=users user=dovecot password=your_password
# default_pass_scheme = SHA512-CRYPT
# password_query = SELECT email AS user, password FROM users WHERE email = '%u';
# user_query = SELECT uid, gid, CONCAT('/var/mail/', email) AS home FROM users WHERE email = '%u';

## 启用了autocreate 插件,它会在用户首次登录时自动创建一些常见的邮件箱(Trash、Sent等)。
## 这是一个很好的配置,可以提高用户体验。
protocol imap {
  mail_plugins = "autocreate"
}
## 用于具体指定 autocreate 插件的行为
plugin {
  autocreate = Trash
  autocreate2 = Sent
  autosubscribe = Trash
  autosubscribe2 = Sent
}

protocols = imap pop3 lmtp sieve
配置数据库来管理用户认证

/etc/dovecot/dovecot-sql.conf.ext
如何不用上面的文件系统来管理邮件,可采用mysql,配置如下:

passdb {
  driver = sql
  args = /etc/dovecot/dovecot-sql.conf.ext
}

创建并编辑Mysql认证配置文件:

sudo nano /etc/dovecot/dovecot-sql.conf.ext

## /etc/dovecot/dovecot-sql.conf.ext
driver = mysql
connect = host=localhost dbname=dovecotdb user=dovecotuser password=yourpassword
default_pass_scheme = SHA512-CRYPT
password_query = SELECT username, domain, password FROM mail_users WHERE username = '%n' AND domain = '%d'
user_query = SELECT home, uid, gid FROM mail_users WHERE username = '%n' AND domain = '%d'

##关于通配符
%u = 匹配完全的 user@domain
%n = 匹配 user@domain 中的user
%d = 匹配 user@domain 中的domain

创建Mysql数据库和用户


CREATE TABLE mail_users (
    username VARCHAR(128) NOT NULL,
    domain VARCHAR(128) NOT NULL,
    password VARCHAR(64) NOT NULL,
    home VARCHAR(255) NOT NULL,
    uid INTEGER NOT NULL DEFAULT 5000,
    gid INTEGER NOT NULL DEFAULT 5000,
    active CHAR(1) DEFAULT 'Y' NOT NULL,
    PRIMARY KEY (username)
);

请确保替换 ‘hashedpassword’ 为实际的哈希密码。你可以使用以下方式生成哈希密码:

doveadm pw -s SHA512-CRYPT

完整配置如下 :

# CREATE TABLE users (
#     username VARCHAR(128) NOT NULL,
#     domain VARCHAR(128) NOT NULL,
#     password VARCHAR(64) NOT NULL,
#     home VARCHAR(255) NOT NULL,
#     uid INTEGER NOT NULL,
#     gid INTEGER NOT NULL,
#     active CHAR(1) DEFAULT 'Y' NOT NULL
# );

# Database driver: mysql, pgsql, sqlite
driver = mysql


#connect =
connect = host=localhost dbname=exampledb user=exampleuser password=examplepw
# Default password scheme.
#
# List of supported schemes is in
# http://wiki2.dovecot.org/Authentication/PasswordSchemes
#
default_pass_scheme = SHA512-CRYPT
password_query = SELECT username, domain, password FROM mail_users WHERE username = '%n' AND domain = '%d'

# Examples:
#   user_query = SELECT home, uid, gid FROM users WHERE userid = '%u'
#   user_query = SELECT dir AS home, user AS uid, group AS gid FROM users where userid = '%u'
#   user_query = SELECT home, 501 AS uid, 501 AS gid FROM users WHERE userid = '%u'
#
user_query = SELECT home, uid, gid FROM mail_users WHERE username = '%n' AND domain = '%d'
监听器配置

/etc/dovecot/conf.d/10-master.conf

  1. 通过限制监听器的 IP 地址,可以减少未经授权的访问。确保只有信任的 IP 地址可以连接到 Dovecot。例如:
## 这个设置是非安全加密通道的连接。一般不启用。
service imap-login {
  inet_listener imap {
    address = 192.168.1.1 ## 如果为*的话则任意终端都可连接
    port = 143
  }
}

在这个示例中,只有 IP 地址为 192.168.1.1 的客户端才能连接到 IMAP 服务。

  1. 启用SSL/TLS

对于安全性考虑,建议始终使用 SSL/TLS 加密通信。确保启用 TLS,并配置相应的证书和私钥路径。示例:

service imap-login {
  inet_listener imaps {
    address = *
    port = 993
    ssl = yes
  }
}

这将启用 IMAPS 监听器,使用 SSL 加密通信,端口为 993。

  1. 限制认证监听器
service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
}

完整的示例如下:

service imap-login {
  inet_listener imap {
    #port = 143
    #禁用未加密的imap连接
    port = 0
  }
  inet_listener imaps {
    address = *
    port = 993
    ssl = yes
  }
}

service pop3-login {
  inet_listener pop3 {
    #port = 110
    # 禁用未加密的接口
    port = 0
  }
  inet_listener pop3s {
    address = 0
    port = 995
    ssl = yes
  }
}

service submission-login {
  inet_listener submission {
    port = 587
  }
}

service lmtp {
   unix_listener lmtp {
     mode = 0666
   }

   mail_plugins = $mail_plugins sieve

  # Create inet listener only if you can't use the above UNIX socket
  inet_listener lmtp {
    # Avoid making LMTP visible for the entire internet
    address = 127.0.0.1
    port = 24
  }
}

service imap {
  # Most of the memory goes to mmap()ing files. You may need to increase this
  # limit if you have huge mailboxes.
  #vsz_limit = $default_vsz_limit

  # Max. number of IMAP processes (connections)
  process_limit = 1024
}

service pop3 {
  # Max. number of POP3 processes (connections)
  process_limit = 1024
}

service submission {
  # Max. number of SMTP Submission processes (connections)
  process_limit = 1024
}

service auth {
  unix_listener auth-userdb {
    mode = 0666
    user = adminmail
    group = adminmail
  }

  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }

  # Auth process is run as this user.
  #user = $default_internal_user
}

service auth-worker {
  # Auth worker process is run as root by default, so that it can access
  # /etc/shadow. If this isn't necessary, the user should be changed to
  # $default_internal_user.
  #user = root
   user = adminmail
}

service dict {
  # If dict proxy is used, mail processes should have access to its socket.
  # For example: mode=0660, group=vmail and global mail_access_groups=vmail
  unix_listener dict {
    mode = 0600
    user = adminmail
    group = adminmail
  }
}
SSL/TLS

/etc/dovecot/conf.d/10-ssl.conf
在 Dovecot 的配置中,/etc/dovecot/conf.d/10-ssl.conf 文件中的 SSL 配置项是为了提供更细粒度的控制,可以覆盖主配置文件 (dovecot.conf) 中的相同配置项。当存在多个配置文件时,Dovecot 会按照一定的优先级和覆盖规则来确定最终的配置。

通常情况下,如果在 /etc/dovecot/conf.d/10-ssl.conf 中配置了 SSL
相关的选项,它们会覆盖主配置文件中的相同选项。这使得你可以在不修改主配置文件的情况下,通过增加或修改
/etc/dovecot/conf.d/10-ssl.conf 中的设置来调整 SSL/TLS 配置。

如果在主配置文件 dovecot.conf 中有以下设置:

ssl = yes
ssl_cert = </etc/ssl/certs/dovecot.pem
ssl_key = </etc/ssl/private/dovecot.key

然后在 /etc/dovecot/conf.d/10-ssl.conf 中有以下设置:

# 启用 SSL/TLS
ssl = required

# SSL/TLS 使用的证书和私钥文件路径
ssl_cert = </etc/ssl/certs/dovecot.pem
ssl_key = </etc/ssl/private/dovecot.key

# 配置支持的加密协议和密码套件
ssl_protocols = TLSv1.2 TLSv1.3
ssl_cipher_list = TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384

# 是否使用强制加密,如果设置为 yes,只有支持 SSL/TLS 的连接将被接受
ssl_require_ciphers = yes
ssl_ciphers = HIGH

# 是否启用 SSL/TLS session 缓存
ssl_session_cache = built-in:1000
ssl_session_timeout = 1 hour

# 配置 Diffie-Hellman 参数的长度,用于支持 Perfect Forward Secrecy (PFS)。
ssl_dh_parameters_length = 2048

# 是否启用 SSL/TLS 的客户端证书验证
# ssl_client_require_cert = no
# ssl_client_cert_file = </etc/dovecot/client.pem
# ssl_client_key_file = </etc/dovecot/client.key

在这种情况下,ssl_protocols 和 ssl_ciphers 会使用 /etc/dovecot/conf.d/10-ssl.conf 中的设置,而 ssl, ssl_cert, 和 ssl_key 仍然使用主配置文件 dovecot.conf 中的设置。
这种设计使得 Dovecot 的配置更加模块化和可扩展,方便管理员通过不同的配置文件对特定部分进行调整而不影响其他配置。

关于证书,如果是在Let’s上申请的证书,则:

  1. 证书的fullchain文件放到服务器的/etc/ssl/certs/xxxx.com.pem下。
  2. 证书的密钥文件放到服务器的/etc/ssl/private/xxxx.com.key下。
  3. 上述二者权限设置为400,属主设置为root:root
验证 SSL 连接
  • 你可以使用 OpenSSL 工具验证 Dovecot 是否正确配置了 SSL。例如,使用以下命令连接到 Dovecot 服务器:
openssl s_client -connect your_mail_server:993

确保连接成功,且 SSL 证书链和信息正确显示。

认证配置

/etc/dovecot/conf.d/10-auth.conf

# /etc/dovecot/conf.d/10-auth.conf

# 启用认证机制
disable_plaintext_auth = yes ##禁止明文登录
auth_mechanisms = plain login

# 认证缓存的配置
auth_cache_size = 1M
auth_cache_ttl = 1 hour
auth_cache_negative_ttl = 1 hour

# 认证进程的配置
auth_worker_max_count = 30
auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@

# 是否启用安全机制,例如在失败的登录尝试后暂时禁用用户
# auth_fail2ban = yes

# 认证的监听器配置
# 这里可以配置 Unix socket 或网络端口,具体取决于你的需求
# 例如,如果你使用 LMTP,可能需要配置 unix_listener 来监听 LMTP 的请求
# 请根据你的实际情况进行配置
# 以下是一个简单的示例,监听 Unix socket
unix_listener auth-userdb {
  mode = 0600
  user = adminmail
  group = adminmail
}

服务的启用

sudo systemctl enable dovecot.service

## 其它命令
sudo systemctl start dovecot.service
sudo systemctl stop dovecot.service

## 查看服务状态
sudo systemctl status dovecot.service
  • 17
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在Ubuntu搭建Teamspeak 3服务器,可以按以下步骤进行操作: 1. 首先,确保你的Ubuntu系统已经更新到最新版本,并安装了必要的依赖项。可以使用以下命令进行更新和安装: ``` sudo apt update sudo apt upgrade sudo apt install wget tar ``` 2. 接下来,创建一个新的用户来运行Teamspeak 3服务器。使用以下命令创建一个名为"teamspeak"的新用户: ``` sudo adduser teamspeak ``` 3. 切换到新创建的用户并进入其主目录: ``` su - teamspeak cd ~ ``` 4. 下载Teamspeak 3服务器的最新版本。可以从Teamspeak官方网站上找到下载链接,或者使用以下命令下载最新版本: ``` wget https://files.teamspeak-services.com/releases/server/3.13.6/teamspeak3-server_linux_amd64-3.13.6.tar.bz2 ``` 5. 解压下载的文件: ``` tar -xvf teamspeak3-server_linux_amd64-3.13.6.tar.bz2 ``` 6. 进入解压后的目录: ``` cd teamspeak3-server_linux_amd64 ``` 7. 启动Teamspeak 3服务器,并接受使用条款: ``` ./ts3server_startscript.sh start ``` 8. 在首次启动时,会显示一些许可协议条款。按照提示输入"yes"以接受条款,并设置管理员密码。 9. Teamspeak 3服务器已经成功搭建。你可以使用Teamspeak客户端连接到服务器并进行配置。 请注意,为了让Teamspeak 3服务器在系统启动时自动启动,你可以将启动脚本添加到系统服务中。这样,在每次系统启动时,Teamspeak 3服务器就会自动启动。 希望以上步骤对你有所帮助!如有任何疑问,请随时向我提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码蚁先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值