我正在尝试同步驻留在不同服务器中的两个邮箱。这是由于迁移过程。旧服务器是快递服务器,需要通过IMAP访问,而新服务器是dovecot服务器。我正在尝试遵循原始 Dovecot 文档。不幸的是,当doveadm脚本在目标服务器上运行时,没有指定源 IMAP 的配置需要设置的位置。文档提供了设置,但没有提到必须输入哪个 dovecot 配置文件。
我一直在尝试设置运行 postfix 的 debian 邮件服务器,但是当我尝试通过mail example@outlook.com收件人发送邮件时,将发件人视为 hostname.domain.com。它发送的主机名没有设置 A 或 MX 记录,它只是 /etc/hostname。如果我通过登录发送,我可以手动将发件人设置为 admin@mydomain.com telnet localhost 25。
我的主要.cf
myorigin = mydomian.com
myhostname = mail.mydomain.com
mydestination = mail.mydomain.com, mydomain.com, localhost, localhost.localdomain
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
smtpd_tls_cert_file=/etc/ssl/certs/mailcert.pem
smtpd_tls_key_file=/etc/ssl/private/mail.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_security_level=may
smtpd_tls_protocols = !SSLv2, !SSLv3
local_recipient_maps = proxy:unix:passwd.byname $alias_maps
Run Code Online (Sandbox Code Playgroud)
和 mail.log 当我发送电子邮件时
Aug 3 06:28:51 hostname postfix/pickup[7047]: …Run Code Online (Sandbox Code Playgroud) 我试图弄清楚文件系统结构和 dovecot 的命名空间前缀之间是否/什么有联系。具体来说,在我的设置中,我没有声明任何命名空间,所以 dovecot 创建了一个默认命名空间。每当新用户第一次登录时,他们的 maildir 中的文件夹结构是:
Maildir/
...
cur
new
.Sent Items
.Drafts
.Junk E-mail
.Deleted Items
...
Run Code Online (Sandbox Code Playgroud)
当我从电子邮件客户端登录时,我看到这些邮箱:
INBOX
Sent Items
Drafts
Junk E-mail
Deleted Items
Run Code Online (Sandbox Code Playgroud)
我的问题是:
1.INBOX邮箱不应该是“.INBOX”目录吗?通过查看内容,我看到 INBOX 邮箱从“cur”目录中获取其项目。为什么收件箱邮箱出现这种异常?
2.如果我使用inbox=yes 和prefix=FOO 定义显式私有命名空间,会产生什么后果,如果有的话,这会对文件夹结构和客户端邮箱显示产生什么影响?基本上我无法弄清楚名称空间前缀的用途,以及它是否用于命名用户 Maildir 中的实际目录。
谢谢
编辑:阅读答案并进行更多挖掘后,我仍然遇到这个问题:IMAP 邮箱/文件夹在 Maildir 目录中有其相应的 fs 目录,(例如,当用户创建(从他们的 IMAP 客户端)一个顶级文件夹/邮箱,说“重要”,在Maildir下创建了一个“.Important”目录。所以每个IMAP邮箱/文件夹的映射目录都是Maildir的子目录。除了INBOX邮箱:它对应的目录是Maildir本身。我想将 INBOX 目录设置为 Maildir 的子目录,就像所有其他邮箱一样。我根本不使用 mbox。我想做的事情有意义吗?如果是,我该怎么做?
我有从StartSSL颁发的证书,它是一个可信的证书权威机构,我的网站使用它的证书没有问题,所有浏览器也没有关于任何信任问题的投诉。
现在我想在 Dovecot 中进行相同的编程,以便通过认证的 SSL 接收我的电子邮件。所以我使用 IMAP 来获取我的邮件,比如通过地址 mail.myweb.com。我去了 StartSSL,并为该子域颁发了一个证书(这是我通过 Apache 服务器获取任何我想要使用 SSL 的子域时总是这样做的)。
现在我拿到了那个证书,并将它定义为我想在 Dovecot 上用于该域名(使用 SNI)的证书,方法是将以下内容添加到 dovecot.conf
local_name mail.myweb.com {
ssl_cert = </path/to/certificate/ssl.crt
ssl_key = </path/to/privatekey/priv.key
}
Run Code Online (Sandbox Code Playgroud)
虽然这个过程在 Apache 服务器上运行得非常好,而且我的浏览器对绿色挂锁很满意,我的证书没有签名问题,但雷鸟坚持我确认这个证书是一个例外。
我通过查看证书的详细信息确认了 Thunderbird 收到的证书是正确的。
原因可能是什么?雷鸟只是偏执,我必须购买证书吗?
如果您需要任何其他信息,请告诉我。
谢谢你。
ssl dovecot thunderbird ssl-certificate certificate-authority
作为英语,我发现术语“垃圾”和“垃圾”令人困惑,因为它们的意思基本相同。我想将我的 Dovecot IMAP 服务器上的这些文件夹分别重命名为“已删除”和“垃圾邮件”,因为这些术语对我来说意义更大。
所以我改成15-mailboxes.conf这样,而不是定义邮箱Junk:
mailbox Spam {
special_use = \Junk
auto = subscribe
}
Run Code Online (Sandbox Code Playgroud)
和类似的垃圾到已删除。
我假设\Junk是一个神奇的词,不应该改变。我还更改了筛选脚本以将邮件重定向到新目录名称。我还将文件系统中的现有文件夹重命名为垃圾邮件等。
当我重新启动 Dovecot 并连接 IMAP 客户端(在本例中为 Outlook 2013)时,Dovecot 仍会创建旧的命名文件夹以及新的文件夹。所以我们有“垃圾邮件”和“垃圾邮件”。“垃圾”是新创建的并且是空的。
我如何抑制这种行为?我只想要“垃圾邮件”和“已删除”。
这里是收件箱的命名空间
namespace inbox {
#mailbox name {
# auto=create will automatically create this mailbox.
# auto=subscribe will both create and subscribe to the mailbox.
#auto = no
# Space separated list of IMAP SPECIAL-USE attributes as specified by
# RFC 6154: \All \Archive \Drafts \Flagged \Junk \Sent \Trash …Run Code Online (Sandbox Code Playgroud) 我刚刚完成了一个 Postfix SMTP 和 Dovecot IMAP/POP3 服务器的设置。
它对于发送和接收的虚拟用户都非常有效,但我需要执行以下操作:
除了虚拟用户能够检索邮件,我也希望能够检索本地用户的邮件。
所以,那将是从 /home/[user]/Maildir
目前 Dovecot 用户以以下格式存储在文件中 [user@domain]:[pass]:[uid]:[gid]
我也可以以某种方式将本地用户添加到该文件中吗?(我已经尝试过了,但是设置主目录不会阻止 Dovecot 解析为虚拟目录,而不是/home/[user]/Maildir.)
如何检索 Dovecot 用户的邮件以及本地用户的邮件?
我遇到了在别处找不到的奇怪情况。当我在本地机器上向 rcook 发送邮件时,我在系统日志中看到了这个:
Feb 16 20:27:14 linode postfix/pickup[1305]: 326CC4463F: uid=0 from=<root>
Feb 16 20:27:14 linode postfix/cleanup[1524]: 326CC4463F: message-id=<20150217042714.326CC4463F@linode.example.net>
Feb 16 20:27:14 linode postfix/qmgr[1306]: 326CC4463F: from=<root@example.net>, size=302, nrcpt=1 (queue active)
Feb 16 20:27:14 linode postfix/lmtp[1531]: 326CC4463F: to=<rcook@example.net>, orig_to=<rcook>, relay=linode.example.net[private/dovecot-lmtp], delay=0.06, delays=0.04/0.01/0.01/0.01, dsn=5.1.1, status=bounced (host linode.example.net[private/dovecot-lmtp] said: 550 5.1.1 <rcook@example.net> User doesn't exist: rcook@example.net (in reply to RCPT TO command))
Feb 16 20:27:14 linode postfix/bounce[1533]: 326CC4463F: sender non-delivery notification: 3C71844643
Feb 16 20:27:14 linode postfix/qmgr[1306]: 326CC4463F: removed
Run Code Online (Sandbox Code Playgroud)
看起来“rcook”正在被后缀变成“rcook@example.net”。根据我的 main.cf 文件,我正在使用 mysql 查找后缀: …
对于使用 Postfix 2.9.6、DSPam 3.10.1 和 Dovecot 2.1.7 的传入邮件,我遇到了以下情况:
Incoming Mail -> SMTP -> LMTP -> DSpam (as daemon) -> LMTP -> Dovecot
Run Code Online (Sandbox Code Playgroud)
我有带有虚拟邮箱的虚拟域。到目前为止一切正常。
指向外部域的(虚拟?)别名现在出现了问题。假设,我有以下虚拟域:
virtualdomain1.com
virtualdomain2.com
Run Code Online (Sandbox Code Playgroud)
我正在为其处理邮件。服务器本身运行在
mydomain.com
Run Code Online (Sandbox Code Playgroud)
如果我现在添加一个指向外部域的别名,例如:
alias@virtualdomain1.com -> user@externaldomain.com
Run Code Online (Sandbox Code Playgroud)
然后(据我所知),DSPam 检查邮件,通过 LMTP 将其传递给 Dovecot,Dovecot 拒绝邮件,因为 user@externaldomain.com 是未知的(当然这是真的)。
那么如何正确设置以处理虚拟域的别名呢?如果可能,我还想检查虚拟别名的传入邮件。
发送到 alias@virtualdomain1.com 的传入消息的日志是:
postfix/smtpd[23910]: connect from xxx.anyhost.com[1.2.3.4]
postfix/smtpd[23910]: NOQUEUE: filter: RCPT from xxx.anyhost.com[1.2.3.4]: <alias@virtualdomain1.com>: Recipient address triggers FILTER lmtp:unix:/dspam/dspam.sock; from=<sender@anyhost.com> to=<alias@virtualdomain1.com> proto=ESMTP helo=<anyhost.com>
postfix/smtpd[23910]: D91D0771AF70: client=xxx.anyhost.com[1.2.3.4]
postfix/cleanup[23917]: D91D0771AF70: message-id=<550937C8.9050901@anyhost.com>
postfix/smtpd[23910]: disconnect from xxx.anyhost.com[1.2.3.4]
postfix/qmgr[23278]: D91D0771AF70: from=<sender@anyhost.com>, size=1030, nrcpt=1 (queue …Run Code Online (Sandbox Code Playgroud) 我有3台服务器。1 个带 postfix 的 MX 服务器和 2 个 dovecot 服务器。MX 服务器接收电子邮件,然后通过 LMTP 将它们提供给特定的 dovecot 服务器。来自同一域的所有邮箱都在同一台服务器上。
有没有办法临时禁用 LMTP 并为特定域延迟消息?例如,在 dovecot 服务器之间迁移域的情况下。
在后缀上我使用 transport_maps
transport_maps = mysql:/etc/postfix/sql/transport.cf
Run Code Online (Sandbox Code Playgroud)
有了这个查询
query = SELECT concat('lmtp:',servers.address, ':24') FROM servers
JOIN domains ON (domains.server_id=servers.ID)
WHERE domains.name LIKE SUBSTRING_INDEX("%s", "@", -1)
LIMIT 1;
Run Code Online (Sandbox Code Playgroud)
Dovecot 正在侦听端口 24 上的 lmtp,dovecot 中的 user_query 是
user_query = SELECT 1
FROM domains
JOIN mailboxes ON (domains.ID=mailboxes.domain_id)
WHERE
domains.name LIKE '%d'
AND mailboxes.name LIKE '%n'
AND domains.server_id='X'
LIMIT 1;
Run Code Online (Sandbox Code Playgroud)
我检查了 dovecot user_query 手册页,但没有什么可以帮助我(http://wiki2.dovecot.org/UserDatabase …
我正在尝试在 Dovecot 中设置配额。目前 Postfix 与 Dovecot 和 postfixadmin 一起在 Debian Jessie 上运行。
我的问题是配额没有应用,也没有重新计算。即使我超过了 300% 或更多的配额,邮件仍然可以送达。此外,当收到新邮件时,相应表中的值quota2永远不会更新。
这是我到目前为止所做的:
我已经编辑了我/etc/dovecot/dovecot.conf以启用配额(好吧,至少我认为我这样做了):
# 2.1.7: /etc/dovecot/dovecot.conf
# 操作系统:Linux 3.2.0-4-amd64 x86_64 Debian 7.1
# 启用配额插件
mail_plugins = $mail_plugins 配额
auth_mechanisms = 普通登录
log_timestamp = "%Y-%m-%d %H:%M:%S"
# 每个ip需要10个以上的连接
mail_max_userip_connections = 20
# 只启用 imap
协议 = imap
# 证书
ssl_cert=</etc/ssl/localcerts/mailserver.crt
ssl_key=</etc/ssl/localcerts/mailserver.key
密码{
args = /etc/dovecot/dovecot-mysql.conf
驱动程序 = sql
}
用户数据库{
args = /etc/dovecot/dovecot-mysql.conf
驱动程序 = sql
}
服务认证{
unix_listener /var/spool/postfix/private/auth_dovecot {
组 = …