服务

Dovecot

高性能邮件代理(MDA)

配置证书 /etc/dovecot/conf.d/10-ssl.conf

ssl_cert = </etc/letsencrypt..
ssl_key = </etc/letsencrypt..

创建用户并给予权限

useradd -m /var/mail --shell /usr/sbin/nologin vmail
chown vmail:vmail /var/mail
chmod 700 /var/mail

更改/etc/dovecot/conf.d/10-mail.conf中的mail_location

mail_location = sdbox:/var/mail/%n/

修改auth-system/etc/dovecot/conf.d/auth-system.conf.ext的userdb

userdb {
  driver = passwd
  override_fields = uid=vmail gid=vmail home=/var/mail/%n/
}

选择性: mariadb

登录数据库

mysql -u root -p

创建对象

CREATE DATABASE IF NOT EXISTS dovecotDB;

USE dovecotDB;

CREATE TABLE IF NOT EXISTS users (
    username VARCHAR(255) NOT NULL PRIMARY KEY,
    password VARCHAR(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE USER IF NOT EXISTS 'dovecot'@'localhost' IDENTIFIED BY 'your_secure_password';

GRANT SELECT ON dovecotDB.* TO 'dovecot'@'localhost';

FLUSH PRIVILEGES;

SHOW GRANTS FOR 'dovecot'@'localhost';

注释掉不使用的/etc/dovecot/conf.d/10-auth.conf中的身份验证 并打开sql

#!include auth-system.conf.ext
!include auth-sql.conf.ext

修改/etc/dovecot/conf.d/auth-sql.conf.ext中的userdb

userdb {
  driver = sql
  args = /etc/dovecot/dovecot-sql.conf.ext
  override_fields = uid=vmail gid=vmail home=/var/mail/%n/
}

创建/etc/dovecot/dovecot-sql.conf.ext

driver = mysql**
connect = host=mariadb_srv.example.com dbname=dovecotDB user=dovecot password=_<dovecotPW>_ ssl_ca=/etc/pki/tls/certs/ca.crt
default_pass_scheme = SHA512-CRYPT
user_query = SELECT username FROM users WHERE username='%u';
password_query = SELECT username AS user, password FROM users WHERE username='%u';
iterate_query = SELECT username FROM users;

选择性: pgsql

CREATE TABLE mail_domain (
    id SERIAL PRIMARY KEY,
    domain_name VARCHAR(255) NOT NULL UNIQUE,
    active BOOLEAN DEFAULT TRUE,
    created_at TIMESTAMP DEFAULT NOW()
);

LMTP

与postfix通讯

开启lmtp协议

/etc/dovecot/dovecot.conf

protocols = imap pop3 lmtp

默认情况下 会在/var/run/dovecot/lmtp创建socket

可在/etc/dovecot/conf.d/10-master.conf中修改

若要监听端口 在service lmtp命名空间内加入inet_listener

service lmtp {
  ...
  inet_listener lmtp {
    port = 24
  }
  ...
}

Postfix

高性能邮件服务器(MTA)

  • main.cf: 包含 Postfix 的全局配置。

  • master.cf: 指定 Postfix 与各种进程进行交互以完成邮件发送。

  • access :指定访问规则,例如允许连接到 Postfix 的主机。

  • transport :将电子邮件地址映射到中继主机。

  • aliases :包含一个邮件协议所需的可配置列表,其描述用户 ID 别名。请注意,您可以在 /etc/ 目录中找到此文件。

修改main.cf

inet_interfaces = all
myhostname = smtp.example.com
mydomain = example.com
myorigin = $mydomain # 使用这个设置时,Postfix 使用域名而不是主机名作为本地发送的邮件的源。
smtpd_tls_cert_file = /etc/pki/tls/certs/postfix.pem
smtpd_tls_key_file = /etc/pki/tls/private/postfix.key
smtpd_tls_auth_only = yes

可选的 多个域转发

在/etc/postfix/virtual加入转发

<info@example.com> <user1@example.net>

其中info@example.com 会转发到user1@example.net

创建hash文件

postmap /etc/postfix/virtual

在main.cf加入virtual_alias_maps参数

virtual_alias_maps = hash:/etc/postfix/virtual

联动dovecot

首先在dovecot中配置了LMTP套接字或监听服务

main.cf

virtual_transport = lmtp:unix:/var/run/dovecot/lmtp # 虚拟邮箱
mailbox_transport = lmtp:unix:/var/run/dovecot/lmtp # 非虚拟邮箱

Gnu mailman

GNU的邮件列表管理器


postgres

连接数据库

psql -U root