使用虚拟域设置 Postfix
Postfix 1.9 版本
概述
我们的目标是创建一个 Postfix 配置来托管多个邮件域名。
我想记录如何设置以及如何维护它。
完成 Postfix 安装后,您可以继续安装(取决于您的需求)
- clamav
- gross
- dovecot
- 其他邮件相关应用
请查看 Hosting_services_on_Alpine#Mail 以获取各种替代方案和说明。
初始设置
将 alpine-1.9.3-x86.iso (或更高版本) 刻录到 CD 并启动机器。
建议:按照 设置 SSH 服务器 的说明进行操作,以便能够远程管理此机器。
Postfix
安装
apk_add postfix
准备
我们需要在此系统上创建一个用户,该用户具有在您的系统上读取/写入邮件的权限。
我们称此用户为 vmail(如果您愿意,可以选择其他名称)。
系统将提示您输入密码。
adduser vmail
现在我们需要知道该用户获得的 gid/uid。
记下这些数字,您将在接下来的配置中需要它们(在我的情况下,我获得了 uid/gid '1001')。
grep vmail /etc/passwd
这个新创建的用户将需要在 mail 组中拥有权限。
编辑 /etc/group 并将 vmail 添加到 postdrop 组。请看下面的示例
postdrop:x:208:vmail
创建缺失目录
似乎我们缺少 /var/spool/mail,所以我们需要创建它
mkdir /var/spool/mail
创建虚拟邮件目录
在接下来的配置中,我们将指定 /var/spool/mail/vhosts/ 作为 virtual_mailbox_base,因此我们需要创建它。
mkdir /var/spool/mail/vhosts
并且我们需要为我们的 vmail 用户授予权限,以便他可以在此文件夹中读取/写入。
chown vmail:postdrop /var/spool/mail/vhosts
配置
FIXME: 以下配置还需要更多工作
/etc/postfix/main.cf
这些是从默认值更改的变量
## These settings differers from the default config ## soft_bounce = yes # For testing myhostname = mail.example.net mydomain = example.net myorigin = $mydomain mydestination = localhost, mail.localdomain, localhost.localdomain, localdomain # See 'virtual_mailbox_domains' for more information mynetworks = 192.168.10.0/24, 127.0.0.0/8 relayhost = in_flow_delay = 1s home_mailbox = Maildir/ mail_spool_directory = /var/spool/mail smtpd_banner = $myhostname ESMTP $mail_name ($mail_version) ## The following is added to the config ## local_transport = virtual virtual_mailbox_domains = example.net virtual_mailbox_base = /var/spool/mail/vhosts virtual_mailbox_maps = hash:/etc/postfix/vmailbox virtual_minimum_uid = 100 virtual_uid_maps = static:1001 virtual_gid_maps = static:1001 virtual_alias_maps = hash:/etc/postfix/valias smtpd_helo_required = yes disable_vrfy_command = yes smtpd_recipient_restrictions = reject_unauth_pipelining, permit_sasl_authenticated, permit_mynetworks, reject_invalid_hostname, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unauth_destination, permit smtpd_data_restrictions = reject_unauth_pipelining, permit
/etc/postfix/valias
postmaster@example.net user1@example.net hostmaster@example.net user2@example.net
/etc/postfix/vmailbox
user1@example.net example.net/user1/ user2@example.net example.net/user2/ @example.net example.net/catchall #everyone else doesn't match rule above
创建数据库
一旦您创建了上述配置文件,您需要生成一些数据库
postmap /etc/postfix/vmailbox postmap /etc/postfix/valias
我不能 100% 确定是否需要下一个命令,但我认为您需要创建 'aliases' 数据库。
postmap /etc/postfix/aliases
启动 Postfix
是时候启动了。希望它能工作!
/etc/init.d/postfix start
调试
如果出现问题,您应该查看您的系统日志。
我个人习惯在调试时 tail 日志文件
tail -f /var/log/messages
添加/移除邮箱
在上面的示例中,我们使用 /etc/postfix/vmailbox 来存储我们的邮箱列表。
要添加/移除邮箱,您需要编辑此文件,然后重建数据库。
vi /etc/postfix/vmailbox postmap /etc/postfix/vmailbox
现在我们已经完成了重新配置,我们希望 Postfix 开始使用新设置。
postfix reload