热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用Docker作为邮件服务器

如何解决《使用Docker作为邮件服务器》经验,为你挑选了2个好方法。

我对docker感兴趣了一段时间,但还没有跳进去.我需要设置一个邮件服务器,所以我想也许可以用它作为了解更多有关docker的理由.但是,我不清楚如何最好地去做.

我之前在VPS上安装了一个邮件服务器,但没有安装到多个容器中.我想安装Postfix,Dovecot,MySQL或Postgresql,以及SpamAssassin,类似于这里描述的内容:

https://www.digitalocean.com/community/tutorials/how-to-configure-a-mail-server-using-postfix-dovecot-mysql-and-spamassasin

但是,将它停泊的好方法是什么?我会简单地将所有东西放入一个容器中吗?或者将MySQL放在一个容器中,将Postfix放在另一个容器中,以及为Dovecot和SpamAssassin添加其他容器会更好吗?或者应该共享一些容器?

使用docker安装邮件服务器有什么HOWTO?如果有,我还没有找到它.



1> Moshe Katz..:

Docker的观点不是容器化的集装箱化.它是将属于一起的东西放在一起并将不属于一起的东西分开.

考虑到这一点,我设置它的方式是使用MySql数据库的容器和所有邮件组件的另一个容器.邮件组件通常通过调用彼此的可执行文件或通过读/写共享文件相互集成,因此无论如何将它们分开放在单独的容器中是没有意义的.由于数据库也可以用于其他事情,并且通过套接字与它进行通信,因此将它作为一个单独的容器更有意义.


@Tauren如果你长时间环顾四周,你最终会收集到这类问题的每一个答案.选择最适合你的方式.
@Moshe,我理解你的观点,但我也有其他建议.有人建议,如果MTA内部调用其他可执行文件,最好将它们保存在同一图像中.但是,如果这些可执行文件在自己的进程空间中作为自己的命令运行,则它们应该位于不同的映像中.另一个人建议在不同的容器中运行所有东西,所以mysql,postfix,dovecot,spamassassin等都将是单独的容器.他建议在这种情况下使用--link.这样可以在不影响其他部件的情况下更换每件产品.

2> mc0e..:

Dovecot,Spamassassin等可以在单独的容器中使用postfix.使用LMTP进行连接,它们都可以正常工作.这很实用.

现在为意识形态一点.如果你真的想做"码头工作者"的事情,那会是什么样子.

Postfix很难.它不是一个守护进程,而是一组不同的守护进程,它们相互通信并执行邮件处理任务的不同部分.这些组件守护进程之间的一些交互是通过文件(例如邮件队列),一些是通过套接字,一些是通过信号.

当你启动postfix时,你真的启动了'master'守护进程,然后使用master.cf中的规则启动它需要的其他守护进程.

在这种情况下,记录尤其困难.所有不同的守护进程独立地登录到/ dev/log,如果没有将syslog守护进程放在容器中,就没有办法处理这些日志."不是码头工人!"

基本上,后缀功能的划分是一种微服务方式,但它不是基于容器化.您无法将不同的服务分离到docker下的不同容器中,即使可以,依赖于信号也是有问题的.

我想有可能重新设计'master'守护进程,让它可以访问主机中的docker进程(或在docker中运行docker),因此这个新的主守护进程可以在不同的容器中协调各种服务.我们可以推测,但我没有听说有人将此视为实际项目.

这使得我们更有可能选择一个比postfix更容易使用容器的守护进程,以便在docker中使用.在过去的十年里,我一直在或多或少地使用postfix,并且到目前为止还没有太多理由去看看选项.如果有人可以添加有关更多码头友好的MTA选项的评论,我会非常感兴趣吗?


推荐阅读
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 本文探讨了容器技术在安全方面面临的挑战,并提出了相应的解决方案。多租户保护、用户访问控制、中毒的镜像、验证和加密、容器守护以及容器监控都是容器技术中需要关注的安全问题。通过在虚拟机中运行容器、限制特权升级、使用受信任的镜像库、进行验证和加密、限制容器守护进程的访问以及监控容器栈,可以提高容器技术的安全性。未来,随着容器技术的发展,还需解决诸如硬件支持、软件定义基础设施集成等挑战。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
author-avatar
0704034铜豌豆
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有