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

在Ubuntu系统中安装Postfix邮件服务器并发送邮件

本文介绍ubuntu上邮件服务器的基本配置过程,面向个人和初级企业应用,能够保证信息安全但不涉及垃圾邮件和病毒的防范。测试环境使用Ubuntu11.04,Postfix2.8.2,Dovecot1.2.15,其他版本可参照。首先说明基本的背景知识。一个邮件服务器通常包括如下

本文介绍 ubuntu 上邮件服务器的基本配置过程,面向个人和初级企业应用,能够保证信息安全但不涉及垃圾邮件和病毒的防范。

测试环境使用 Ubuntu 11.04,Postfix 2.8.2,Dovecot 1.2.15,其他版本可参照。

首先说明基本的背景知识。一个邮件服务器通常包括如下两个基本组件:

Mail Transfer Agent (MTA),用于向收件人的目标 agent 发送邮件和接收来自其他 agent 的邮件。我们使用 Postfix 作为 MTA,它比 sendmail 更安全高效,且在 Ubuntu 平台上官方源提供更新。

Mail Delivery Agent (MDA),用于用户到服务器上访问自己的邮件。我们使用 Dovecot 作为 MDA,它在 Ubuntu 平台上也是官方源提供更新。

组件安装

在 root 权限下执行(或使用 sudo):

# apt-get install postfix  

# apt-get install dovecot-common  

# apt-get install dovecot-imapd dovecot-pop3d  

Postfix 基本设置

编辑 /etc/postfix/main.cf 文件,做如下更改:

1. 为支持 TLS 安全连接,确保证书可用(通常默认安装已生成相应文件)

smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem  

smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key  

smtpd_use_tls=yes  

使用安全连接可保证通过客户端发送邮件时不被截获和窃取。

2. 保证邮件服务器的域名存在于下述列表中

mydestination = daolicloud.com, lab, localhost.localdomain, localhost  

这样收件人为该域名的邮件才会被服务器留存而不是转给其他 MTA。

3. 侦听所有网口

inet_interfaces = all  

4. 使用 Maildir 格式存放数据

home_mailbox = Maildir/  

这种格式的好处是邮件分开存放,MDT 访问时不必加锁。而且有些 MDT 仅支持该格式。

5.  配置邮箱和信件大小限制

mailbox_size_limit = 2000000000  

message_size_limit = 20000000  

这里设置邮箱大小为 2 GB,邮件大小为 20 MB。

最后,执行如下命令使上述配置生效:

$ sudo service postfix reload  

验证 Postfix 和添加账户

在本机输入如下命令

$ telnet localhost smtp  

可看到如下输出Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 lab ESMTP Postfix (Ubuntu)

进而输入邮件内容,可以发送给任意已有 linux 用户:

mail from: root@[YourDomain]  

rcpt to: [UserName]@[YourDomain]  

data  

Subject: Hello  

Hi, how are you?  

Regards,  

Admin.  

.  

quit  

此时在该用户的 home 目录下,应当可以看到 Maildir 目录。进入 Maildir/new 下可以看到刚才的邮件(文本文件),用任意文本编辑器即可查看其内容。如需其他邮件账户,只需正常添加 linux 用户即可。通常,我们可以把这些专用于邮件的用户的 home 目录集中到一起,命令行如下:

$ useradd -m -d /home/mail-users/[UserName] -g mail-users [UserName]  

这里将邮件账户的 home 目录都放置在了 /home/mail-users 下。

到这里为止,是可以发送邮件了,我测试过发送给我的google邮箱和公司邮箱,都收到了来自我个人电脑ubuntu的邮件。不过由于我还没配置DNS服务器,相当于我的电脑是孤立的,无法访问的,所以没法收到邮件,下面的配置无效,仅供参考:

dovecot 基本设置

编辑 /etc/dovecot/dovecot.conf 文件,做如下更改:

1. 使用 maildir 格式(与 postfix 格式对应)

mail_location = maildir:~/Maildir  

2. 侦听所有默认端口

3. 设置安全的远程访问

为了使用户可以远程访问,必须开启基于用户名 / 密码的验证:

disable_plaintext_auth = no  

但与此同时,由于用户名 / 密码都是明文,我们应该要求建立安全连接以防止信息泄露

ssl = required  

ssl_cert_file = /etc/ssl/certs/dovecot.pem  

ssl_key_file = /etc/ssl/private/dovecot.pem  

先前 Postfix 使用的是 TLS,这里的 SSL 与之类似。确保上述文件存在且可用,通常默认文件已经生成好。

最后,别忘使更改的配置生效:

$ sudo service dovecot reload  

使用邮件客户端 至此,Postfix 和 Dovecot 最基本的配置已经完成,可以使用邮件客户端(如 Outlook)收发邮件,注意在设置账户时使用上述配置的加密类型,如下图:

【Trouble-shoot】如果服务器有防火墙,确保端口 25 和 993 开放。

增加 SMTP 验证(重要)

增加此项验证,可以防止恶意或垃圾邮件通过你的 MTA 进行传递。我们使用的验证机制是 SASL,采用和接收邮件账户相同的用户名 / 密码,匿名用户将被拒绝。

同样需要更改文件 /etc/postfix/main.cf,或者直接使用如下命令(两者等效):

sudo postconf -e 'smtpd_sasl_auth_enable = yes'  

sudo postconf -e 'smtpd_sasl_type = dovecot'  

sudo postconf -e 'smtpd_sasl_path = private/auth'  

sudo postconf -e 'smtpd_sasl_security_options = noanonymous'  

sudo postconf -e 'broken_sasl_auth_clients = yes'  

sudo postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'  

相应地,dovecot 需要开放验证接口,编辑文件 /etc/dovecot/dovecot.conf,在 auth default 节中添加如下行,形如:

auth default {  

  ......  

  socket listen {  

    client {  

      path = /var/spool/postfix/private/auth  

      mode = 0660  

      user = postfix  

      group = postfix  

    }  

  }  

  ......  

}  

为了保证用户名 / 密码安全,建议发送邮件服务器也强制使用安全连接:

sudo postconf -e 'smtpd_tls_auth_only = yes'  

最后别忘使配置生效:

$ sudo service postfix reload  

$ sudo service dovecot reload  

此时再配置邮件客户端时,需要勾选 SMTP 认证,如下图(Outlook 2010):

至此,所有设置已经完成,使用邮件客户端收发应该正常,而且可以保证安全性。

截取我的mail日志信息,供以后查看:

Mar  8 19:12:05 ubuntu dovecot: master: Error: Error reading configuration: input is missing end-of-settings line
Mar  8 19:29:11 ubuntu postfix/smtpd[10318]: fatal: no SASL authentication mechanisms
Mar  8 19:30:12 ubuntu postfix/smtpd[10416]: fatal: no SASL authentication mechanisms
Mar  8 19:33:30 ubuntu dovecot: config: Fatal: Error in configuration file /etc/dovecot/dovecot.conf line 39: Unknown setting: uth
Mar  8 19:33:40 ubuntu dovecot: master: Error: Error reading configuration: Timeout reading config from /var/run/dovecot/config
Mar  8 19:33:40 ubuntu dovecot: master: Error: service(config): command startup failed, throttling
Mar  8 19:33:50 ubuntu postfix/smtpd[10645]: fatal: no SASL authentication mechanisms
Mar  8 19:34:55 ubuntu dovecot: config: Fatal: Error in configuration file /etc/dovecot/dovecot.conf line 40: Expecting '='
Mar  8 19:34:59 ubuntu postfix/smtpd[10668]: fatal: no SASL authentication mechanisms
Mar  8 19:35:05 ubuntu dovecot: master: Error: Error reading configuration: Timeout reading config from /var/run/dovecot/config
Mar  8 19:35:05 ubuntu dovecot: master: Error: service(config): command startup failed, throttling
Mar  8 19:36:38 ubuntu postfix/smtpd[10674]: fatal: no SASL authentication mechanisms
Mar  8 19:53:26 ubuntu postfix/smtpd[11114]: fatal: no SASL authentication mechanisms
Mar  8 19:59:44 ubuntu postfix/smtpd[11156]: fatal: no SASL authentication mechanisms


推荐阅读
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • Ubuntu安装常用软件详细步骤
    目录1.GoogleChrome浏览器2.搜狗拼音输入法3.Pycharm4.Clion5.其他软件1.GoogleChrome浏览器通过直接下载安装GoogleChro ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • PDF内容编辑的两种小方法,你知道怎么操作吗?
    本文介绍了两种PDF内容编辑的方法:迅捷PDF编辑器和Adobe Acrobat DC。使用迅捷PDF编辑器,用户可以通过选择需要更改的文字内容并设置字体形式、大小和颜色来编辑PDF文件。而使用Adobe Acrobat DC,则可以通过在软件中点击编辑来编辑PDF文件。PDF文件的编辑可以帮助办公人员进行文件内容的修改和定制。 ... [详细]
author-avatar
kaga1990_106
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有