在数据库中存储邮件的最佳方式(后缀)[关闭]

Posted

技术标签:

【中文标题】在数据库中存储邮件的最佳方式(后缀)[关闭]【英文标题】:best way to store mail in DB (postfix) [closed] 【发布时间】:2012-09-30 15:34:26 【问题描述】:

请给我一个最好的解决方案,用后缀将所有邮件(发送、接收、转发)存储在 mysql 中? 和 这是正确的方法吗?

【问题讨论】:

是的,我正在寻找最佳架构。 dbmail 是您要找的那种东西吗? 【参考方案1】:

Postfix 服务器本身不存储电子邮件(至少不会很长时间) - 它只能暂时排队,直到它被转发给预期的收件人。通常只有 IMAP(或过时的 POP3)服务器实际存储您的电子邮件。

大多数开源 IMAP 服务器(Courier、Cyrus、Dovecot...)都支持使用 MySQL 作为数据库来保存用户和密码列表、接受域列表、用户别名等元信息。但甚至没有尝试使用像 MySQL 这样的数据库作为实际的存储后端。

当然,如果您真的喜欢冒险,您可以尝试实现自己的 SQL IMAP 后端。 对您而言,最重要的考虑因素之一是数据库引擎对无限长度的 VARCHAR 或 BLOB(用于电子邮件附件)的良好支持。不幸的是,就 BLOB 支持而言,MySQL 并不是很好的服务器(您必须为此调整客户端和服务器配置)。此外,如果您关心电子邮件数据的安全,您可能希望获得良好的交易支持。对于 MySQL,这意味着您必须使用 InnoDB 引擎。

【讨论】:

我认为您的回答在某些方面是错误的。如果我们谈论外发邮件,则队列是正确的。但是收到的邮件后缀会将电子邮件存储到文件系统中。 imap/pop 服务器将从那里接收它们。存储以 mbox 格式完成,通常位于 /var/spool/mail/[username] 这是误导...接受的答案和明显错误...您应该研究它的实际工作原理并编辑您的答案。 如果您在服务器上安装 postfix(没有 IMAP 或 POP3),您发送和接收的邮件会发生什么情况?嘘!它消失在下界…… 对不起,最后一部分是讽刺,但无论如何我的意思是冒犯。我只是想表达的观点很明显。如果您查看配置,您会看到其中两个指定您要存储邮件的位置,是的后缀配置:home_mailbox = Maildir/virtual_mailbox_base = /mail。因此,在我的情况下,所有邮件都存储在/mail 中,每个邮件都存储在其各自的文件夹收件箱/已发送和帐户名父文件夹内。此外,SMTP 只是 postfix 使用的协议,postfix 是 MTA(邮件传输系统)。 Postfix 开发人员这样做是为了让它可以存储邮件(直到今天它都是真的)。​​ 您声称 postfix 不存储邮件,但您可以将其配置为这样做,将邮件传递到本地文件系统中的邮箱...我只是说,编辑它说:"如果配置,Postfix 可以将邮件发送到邮箱”......这不是我的意见,你写了一个谎言,postfix 文档证明了这一点。此外,编辑 IMAP(和 POP3)服务器存储邮件的部分,因为它们所做的是验证虚拟用户并检索他们的邮件,正如 Bernd Ott 告诉你的那样......再次,不是我的意见,文档证明你错了。如果你回答,至少你应该做的就是研究......【参考方案2】:

你可以试试https://wiki.ubuntu.com/PostfixCompleteVirtualMailSystemHowto 使用mysql和postfix的虚拟邮件、域和用户。

【讨论】:

您提供的链接实际上并未按照要求将发送或接收的电子邮件存储到 mysql 中。只有虚拟用户和域被保存到 mysql 中。电子邮件内容仍保存在文件系统中。

以上是关于在数据库中存储邮件的最佳方式(后缀)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 中存储网站设置的最佳方式是啥? [关闭]

在 Android SQLite 中处理日期的最佳方式 [关闭]

加盐密码:最佳实践? [关闭]

在本地存储 PC 应用程序数据并与服务器数据库同步的最佳方式 [关闭]

为自动电子邮件脚本存储帐户凭据(尤其是密码)的最佳方式是啥?

本地机密存储是敏感数据的最佳做法吗? [关闭]