我很难理解后缀如何将数据中继到Dovecot,并寻找最小值(尽可能少偏离分发版配置文件),但是完成了关于如何完成以下工作的示例:
我有几个域,我想接收邮件。我希望有虚拟用户与他们的所有信息,包括密码存储在纯文本文件(S)。
所以,依循后缀的例子,我会
virtual_mailbox_domains = mydomain1.com, mydomain2.com, ... (or a hash)
virtual_mailbox_maps = hash:/path/to/vmailboxes
virtual_transport = lmtp:unix:private/dovecot-lmtp在邮箱里我会
user@mydomain1.com someuser在Dovecot我会
passdb {
driver = passwd-file
args = scheme=plain-md5 username_format=%n /usr/local/etc/dovecot/users
}
userdb {
driver = passwd-file
args = username_format=%n /usr/local/etc/dovecot/users
default_fields = uid=dovecot gid=dovecot home=/home/dovecot/%u
}因此,在我看来,我应该让Postfix接受用户@mydomain1.com的邮件,了解它的目的地是某个名为某个用户的用户,并将其准确地转发给Dovecot。然而,Postfix总是将user@mydomain1.com中继到Dovecot,这肯定不是我想要的,因为我可能有其他电子邮件地址指向同一个用户,比如
user@mydomain1.com someuser
sales@mydomain1.com someuser我希望Dovecot能够查询其密码/用户数据库,并将邮件填充到适当的目录中供某些用户使用。同样,我也希望它能够使用相同的数据库进行IMAP身份验证。
最后,我希望有SMTP授权,以便某些用户可以连接到Postfix并将其用作中继。我如何用我的配置来实现这一点呢?我是否应该在后缀中有单独的密码表,或者Postfix会以某种方式咨询Dovecot并允许该用户发送邮件?
发布于 2018-03-13 10:46:05
所以本质上有两个错误。
首先,对于我的场景来说,virtual_mailbox_maps不是正确的选择。相反,我必须使用virtual_alias_maps。
其次,我们需要在虚拟邮箱的左侧和右侧提供电子邮件地址,因为否则Postfix将尝试将其传递给$myhostname,它只是不能通过LMTP提供一个简单的用户名。所以,如果
info@mydomain1.com someuser@mydomain2.com
ceo@mydomain1.com someuser@mydomain2.com
sales@mydomain1.com anotheruser前两行运行良好,将发送给info@mydomain1.com和ceo@mydomain1.com的邮件转发给Dovecot中名为"someuser@mydomain2.com“的用户。唯一的区别是,在进行身份验证时,我们必须使用"someuser@mydomain2.com“登录,而不是只使用没有”@.“的用户名。
然而,第三行将把sales@mydomain1.com的邮件转发到anotheruser@primary.domain.com,邮箱写将由Postfix处理,在这种情况下不会调用LMTP。
最后,最好使用relay_而不是virtual_,因为用Postfix的术语来说,将邮件中继到Dovecot的LMTP服务,即使它在同一台机器上运行,也与在其他地方中继邮件相同,因此使用relay_选项是“更明智的”。
然后,main.cf的工作配置将是
relay_transport = lmtp:unix:private/dovecot-lmtp
relay_domains = mydomain1.com, mydomain2.com
virtual_alias_maps = hash:/usr/local/etc/postfix/virtualmailboxes
smtpd_sasl_type = dovecot
smtpd_sasl_path = /var/spool/postfix/private/auth
smtpd_sasl_auth_enable = yes
smtpd_tls_cert_file = /etc/ssl/servercertificate.pem
smtpd_tls_key_file = /etc/ssl/serverkey.pem
smtpd_tls_security_level = may
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3根据您的需要,所有其他选项都可以选择,但是我在main.cf示例中没有碰过任何其他的选项,它们都是随Postfix一起提供的,以使工作正常进行。
虚拟邮箱:
info@mydomain1.com user@mydomain2.com
ceo@mydomain1.com user@mydomain2.com
sales@mydomain2.com user@mydomain2.com在Dovecot中配置的授权部分:
auth_debug = yes
auth_verbose = yes
auth_mechanisms = plain
passdb {
driver = passwd-file
args = scheme=plain-md5 username_format=%u /usr/local/etc/dovecot/users
}
userdb {
driver = passwd-file
args = username_format=%u /usr/local/etc/dovecot/users
default_fields = uid=dovemail gid=dovemail home=/var/mail/%u
}/usr/local/etc/dovecot/用户:
user@mydomain1.com:{PLAIN}yourpassword::::::
user@mydomain1.com:{PLAIN}yourpassword::::::/usr/local/etc/dovecot/conf.d需要去掉中间的几行注释,使已经出现的部分看起来如下:
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
mode = 0600
group = postfix
user = postfix
}以及同一文件中的另一个部分:
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}需要创建dovemail用户,并赋予邮件目录的读/写权限,即/var/mail
https://unix.stackexchange.com/questions/429109
复制相似问题