linux最简单搭建邮件服务器

2023-05-16

一、概述:

  在配置邮件服务器之前,先解释几个概念。

  通常使用Email都很容易,但是Internet的邮件系统是通过几个复杂的部分连接而成的,对于最终用户而言,我们熟悉的Outlook,Foxmail等都是用来收信和发信的,称之为MUA:Mail User Agent,邮件用户代理。

  MUA并非直接将邮件发送至收件人手中,而是通过MTA:Mail Transfer Agent,邮件传输代理代为传递,Sendmail和Postfix就是扮演MTA的角色。

一封邮件从MUA发出后,可能通过一个或多个MTA传递,最终到达MDA:Mail Delivery Agent,邮件投递代理,邮件到达MDA后,就存放在某个文件或特殊的数据库里,我们将这个长期保存邮件的地方称之为邮箱。

  一旦邮件到达邮箱,就原地不动了,等用户再通过MUA将其取走,就是用Outlook,Foxmail等软件收信的过程。

  所以一封邮件的流程是:

  发件人:MUA --发送--> MTA -> 若干个MTA... -> MTA -> MDA <--收取-- MUA:收件人

  MUA到MTA,以及MTA到MTA之间使用的协议就是SMTP协议,而收邮件时,MUA到MDA之间使用的协议最常用的是POP3或IMAP。

  需要注意的是,专业邮件服务商都有大量的机器来为用户服务,所以通常MTA和MDA并不是同一台服务器,因此,在Outlook等软件里,我们需要分别填写SMTP发送服务器的地址和POP3接收服务器的地址。

Linux系统下邮件服务器的搭建(Postfix+Dovecot)

  对于网站来说,发送各种例如注册通知的邮件是很基本的一个需求,之前我一直用的是腾讯的企业邮箱,感觉挺方便的,直接可以绑定QQ邮箱接收邮件,网站配置一下SMTP也就可以发出邮件。

但是在前几天由于有重要信息需要立即通知用户,所以选择了群发邮件的方式。在当我以为一切都是辣么完美的时候,陆续有用户过来问我什么情况,我都会跟他们说请查收邮件,但是有好几个人说并没有任何

邮件,于是我试着再发一次,结果返回了错误提示。在网上找了下原因,后来看到这个:各大免费邮箱邮件群发账户SMTP服务器配置及SMTP发送量限制情况,才知道是因为发信数量限制了。

所以只好另寻出路了,然后我在知乎上面找到了很多个提供邮件发送的服务商,大概有这些:SendGrid、MailChimp、Amazon SES、SendCloud、Mailgun等等,在看了不少人的建议之后,我选择了Mailgun。

Mailgun注册和配置都挺简单,很快我就成功的发出了第一封邮件,怀着这封欣喜,我又发送了几封邮件,可是悲剧发生在第三封邮件,Mailgun后台有详细的发送记录,这个非常不错,在后台我看到我的邮件被拒收了,原因大概是该服务器IP的发信频率超过腾讯邮箱限制。所以这里就涉及到IP的问题,目前第三方的邮件发送服务普遍都是共享IP(后面还试过SendCloud、),而共享IP并不能确定是否已经达到接收方的数量限制,一旦达到了就无法再发送。这就是说还需要使用独立IP才能保证邮件有较高的到达率,接着就看了各家的独立IP价格,一般都是二十几甚至四十几美刀一个月,这对于我们这种小站长邮件需求不高的来说确实有点贵,买台VPS都不用这个价吧。

经过上面这些折腾,也算明白了如果要想顺畅的发出邮件的话,除了花钱,就只有自己搭建一个邮件服务器了。

好了,下面开始进入正题,教你搭建一个简单的邮件服务器。

用于搭建的服务器信息

阿里云 Centos 6.5 32位

Postfix-2.8.12.tar.gz      Postfix MTA(邮件传输代理)
Dovecot-2.1.8.tar.gz      IMAP 和 POP3 邮件服务器
Postfixadmin-2.3.5.tar.gz    采用PHP编写的开源WEB邮箱及域名账号管理工具
Roundcubemail-0.8.1.tar.gz  采用PHP编写的开源IMAP邮件WEB客户端

安装过程

1.安装Postfix

yum -y install postfix

安装完成还需要替换系统自带的sendmail:

rpm -e sendmail
或者
yum remove sendmail

修改MTA(默认邮件传输代理)

alternatives --config mta

然后直接回车即可。

检查一下是不是已经设置成功了。

alternatives --display mta

第一行可以看到mta的状态。 例如:mat - status is manual.

2.安装Dovecot

yum -y install dovecot

3.配置Postfix

编辑/etc/postfix/main.cf,可以下载下来修改,也可以使用vi进行编辑:

vi /etc/postfix/main.cf

修改如下:

# 75行: 取消注释,设置hostname
myhostname = mail.lomu.me
# 83行: 取消注释,设置域名
mydomain = lomu.me
# 99行: 取消注释 myorigin = $mydomain # 116行: 修改 inet_interfaces = all # 119行: 推荐ipv4,如果支持ipv6,则可以为all inet_protocols = ipv4 # 164行: 添加 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain # 264行: 取消注释,指定内网和本地的IP地址范围 mynetworks = 127.0.0.0/8, 10.0.0.0/24 # 419行: 取消注释,邮件保存目录 home_mailbox = Maildir/ # 571行: 添加 smtpd_banner = $myhostname ESMTP # 添加到最后 # 规定邮件最大尺寸为10M message_size_limit = 10485760 # 规定收件箱最大容量为1G mailbox_size_limit = 1073741824 # SMTP认证 smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = $myhostname smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject 

修改好了之后使用/etc/rc.d/init.d/postfix start开启postfix,使用chkconfig postfix on将postfix开机启动。

4.配置Dovecot

修改如下:

[root@mail ~]# vi /etc/dovecot/dovecot.conf
# 26行: 如果不使用IPv6,请修改为*
listen = *

[root@mail ~]# vi /etc/dovecot/conf.d/10-auth.conf # 9行: 取消注释并修改 disable_plaintext_auth = no # 97行: 添加 auth_mechanisms = plain login [root@mail ~]# vi /etc/dovecot/conf.d/10-mail.conf # 30行: 取消注释并添加 mail_location = maildir:~/Maildir [root@mail ~]# vi /etc/dovecot/conf.d/10-master.conf # 88-90行: 取消注释并添加 # Postfix smtp验证 unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix } [root@mail ~]# /etc/rc.d/init.d/dovecot start Starting Dovecot Imap: [ OK ] [root@mail ~]# chkconfig dovecot on 

到这里,我们的邮件服务器就已经搭建成功了。

5.域名解析

最后别忘了还需要进行域名解析工作。

添加一个子域名mail,A记录解析到服务器IP。

再添加一个MX记录,主机记录为空,记录值为上面解析的二级域名mail.lomu.me,优先级10。

注意:解析生效可能需要一段时间。

6.防火墙设置

/sbin/iptables -A INPUT  -p tcp --dport 25 -j ACCEPT

/sbin/iptables -A INPUT  -p tcp --dport 110 -j ACCEPT

/sbin/iptables -A INPUT  -p tcp --dport 143 -j ACCEPT

突破封锁25口的转发

/sbin/iptables -t nat -A PREROUTING -p tcp -m tcp --dport 10025 -j REDIRECT --to-ports 25

7.邮箱使用

一切都弄好以后,就可以使用Foxmail等第三方软件来收发邮件了。在这里需要说一下,系统用户就是邮件的用户,例如root,就是一个邮箱用户,邮箱是root@domain.com,密码就是root的密码,所以需要创建用户,只要使用useradd创建用户,再使用passwd设置密码。

好了,假如我们创建一个admin的用户:

# 创建用户
useradd admin
#设置密码,会要求输入两次密码
passwd admin

接下来登录Foxmail,如图:

点击创建,进入:

  

这里需要注意,邮件账号是admin,并不是邮箱,另外我们没有配置SSL,所以也不要勾选。 接下来点击创建,如果一切正常的话,你已经成功了。

后续

这篇文章已经完整的介绍了搭建一个简单邮件服务器的方法,但是在使用中还是会遇到很多问题,最大的问题莫过于经常被认定为垃圾邮件,所以还需要进行一些其他配置,例如:spf、dkim。

转自:http://www.cnblogs.com/chris-cp/p/4843407.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux最简单搭建邮件服务器 的相关文章

  • 何时使用 pthread 条件变量?

    线程问题 看来 只有在其他线程调用 pthread cond notify 之前调用 pthread cond wait 时 条件变量才起作用 如果在等待之前发生通知 那么等待将被卡住 我的问题是 什么时候应该使用条件变量 调度程序可以抢占
  • Unix 命令列出包含字符串但*不*包含另一个字符串的文件

    如何递归查看包含一个字符串且不包含另一个字符串的文件列表 另外 我的意思是评估文件的文本 而不是文件名 结论 根据评论 我最终使用了 find name html exec grep lR base maps xargs grep L ba
  • 从 PL/SQL 调用 shell 脚本,但 shell 以 grid 用户而非 oracle 身份执行

    我正在尝试使用 Runtime getRuntime exec 从 Oracle 数据库内部执行 shell 脚本 在 Red Hat 5 5 上运行的 Oracle 11 2 0 4 EE CREATE OR REPLACE proced
  • Jenkins中找不到环境变量

    我想在詹金斯中设置很多变量 我试过把它们放进去 bashrc bash profile and profile of the jenkins用户 但 Jenkins 在构建发生时找不到它们 唯一有效的方法是将所有环境变量放入Jenkinsf
  • Linux TUN/TAP:无法从 TAP 设备读回数据

    问题是关于如何正确配置想要使用 Tun Tap 模块的 Linux 主机 My Goal 利用现有的路由软件 以下为APP1和APP2 但拦截并修改其发送和接收的所有消息 由Mediator完成 我的场景 Ubuntu 10 04 Mach
  • 如何在 shell 脚本中并行运行多个实例以提高时间效率[重复]

    这个问题在这里已经有答案了 我正在使用 shell 脚本 它读取 16000 行的输入文件 运行该脚本需要8个多小时 我需要减少它 所以我将其划分为 8 个实例并读取数据 其中我使用 for 循环迭代 8 个文件 并在其中使用 while
  • gdb查找行号的内存地址

    假设我已将 gdb 附加到一个进程 并且在其内存布局中有一个文件和行号 我想要其内存地址 如何获取文件x中第n行的内存地址 这是在 Linux x86 上 gdb info line test c 56 Line 56 of test c
  • Linux中的CONFIG_OF是什么?

    我看到它在很多地方被广泛使用 但不明白在什么场景下我需要使用它 What is 配置 OF OF 的全名是什么 打开固件 这是很久以前发明的 当时苹果公司正在生产基于 PowerPC CPU 的笔记本电脑 而 Sun Microsystem
  • 大多数 Linux 系统头文件与 C++ 兼容吗?

    大多数 Linux 系统头文件 API C 兼容吗 今天我试图做这样的事情 include
  • 无法从 jenkins 作为后台进程运行 nohup 命令

    更新 根据下面的讨论 我编辑了我的答案以获得更准确的描述 我正在尝试从詹金斯运行 nohup 命令 完整的命令是 nohup java jar home jar server process 0 35 jar prod gt gt var
  • chown:不允许操作

    我有问题 我需要通过 php 脚本为系统中的不同用户设置文件所有者权限 所以我通过以下命令执行此操作 其中 1002 是系统的用户 ID file put contents filename content system chown 100
  • 如何在数组中存储包含双引号的命令参数?

    我有一个 Bash 脚本 它生成 存储和修改数组中的值 这些值稍后用作命令的参数 对于 MCVE 我想到了任意命令bash c echo 0 0 echo 1 1 这解释了我的问题 我将用两个参数调用我的命令 option1 without
  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • linux perf:如何解释和查找热点

    我尝试了linux perf https perf wiki kernel org index php Main Page今天很实用 但在解释其结果时遇到了困难 我习惯了 valgrind 的 callgrind 这当然是与基于采样的 pe
  • 尝试安装 LESS 时出现“请尝试以 root/管理员身份再次运行此命令”错误

    我正在尝试在我的计算机上安装 LESS 并且已经安装了节点 但是 当我输入 node install g less 时 出现以下错误 并且不知道该怎么办 FPaulMAC bin paul npm install g less npm ER
  • Linux 内核标识符中前导和尾随下划线的含义是什么?

    我不断遇到一些小约定 比如 KERNEL Are the 在这种情况下 是内核开发人员使用的命名约定 还是以这种方式命名宏的语法特定原因 整个代码中有很多这样的例子 例如 某些函数和变量以 甚至 这有什么具体原因吗 它似乎被广泛使用 我只需
  • CentOS:无法安装 Chromium 浏览器

    我正在尝试在 centOS 6 i 中安装 chromium 以 root 用户身份运行以下命令 cd etc yum repos d wget http repos fedorapeople org repos spot chromium
  • Linux 可执行文件与 OS X“兼容”吗?

    如果您在基于 Linux 的平台上用 C 语言编译一个程序 然后将其移植以使用 MacOS 库 它会工作吗 来自编译器的核心机器代码在 Mac 和 Linux 上兼容吗 我问这个问题的原因是因为两者都是 基于 UNIX 的 所以我认为这是真
  • Linux:如何从特定端口发送TCP数据包?

    如何打开原始套接字以从特定 TCP 端口发送 我希望所有连接始终来自临时端口以下的一系列端口 如果您正在使用raw套接字 然后只需在数据包标头中填写正确的 TCP 源端口即可 相反 如果您使用 TCP 套接字接口 socket connec
  • Linux 中什么处理 ping?

    我想覆盖 更改 linux 处理 ping icmp echo 请求数据包的方式 这意味着我想运行自己的服务器来回复传入的 icmp 回显请求或其他 数据包 但为了使其正常工作 我想我需要禁用 Linux 的默认 ping icmp 数据包

随机推荐

  • DLT645-2007 规约 电表 报文解析

    注 xff1a 本文为转载 转载地址 xff1a https wenku baidu com view cc10838283d049649b66580d html DLT645 2007 规约 常见报文解析 2012 9 29 by leg
  • 同相比例放大器 输入端 平衡电阻的问题

    同相比例放大器 xff0c 电路原型如下 xff0c 该图是从网上摘取的 xff08 如侵权请联系删除 xff0c 原网址链接见注1 xff09 其中R1为平衡电阻 xff0c 该电阻存在的意义个人认为用于平衡 43 和 向的输入电流 xf
  • SIM800C 透传模式与非透传模式测试对比

    测试过程中 xff0c 公网 IP地址为 xff1a 39 162 72 33 1080 测试 SIM xff1a 中国移动物联卡 测试数据格式 xff1a 16进制 链路连接 xff1a 单路 工作模式 xff1a TCP客户端 说明 x
  • PADS 无模命令 层显示

    Z 43 1 显示的为第一层 Z 43 2 显示的为第二层 依次类推 Z 43 o 显示外层 xff0c 即首层 Z xff08 n M 即显示第几层到第几层 Z 显示所有层 ZT 显示顶层 ZB 显示底层 ZSM Z B显示底层Z C显示
  • 16位精度 ADC 选型

    ADS8320 售价 xff1a 人民币25 40元 ADS8320 16 Bit High Speed 2 7 V to 5 V microPower Sampling Analog to Digital Converter 1Featu
  • 怎么样在stata上安装pwcorr_a啊?findit pwcorr_a之后就是下面图那样?

    怎么样在stata上安装pwcorr a啊 xff1f findit pwcorr a之后就是下面图那样 xff1f 转载 xff1a 我的电脑用findit 不行 xff0c 经管之家的要收费 xff0c 在Gitte网站找到一个开源的压
  • 奇偶校验(附代码实现)

    定义 奇偶校验 Parity Check 是一种校验代码传输正确性的方法 根据被传输的一组二进制代码的数位中 1 的个数是奇数或偶数来进行校验 采用奇数的称为奇校验 xff0c 反之 xff0c 称为偶校验 采用何种校验是事先规定好的 通常
  • libcurl在windows中编译和使用的说明文档(官方翻译)

    使用Visual C构建先决条件 本文档描述了如何编译 xff0c 构建和安装curl和libcurl 从使用Visual C构建工具的来源 要用VC构建 xff0c 你会 当然要先安装VC 所需的最低版本VC是6 xff08 Visual
  • odroid xu4安装ROS melodic+远程登录+Roboware 开发

    odroid xu4安装ROS melodic 43 远程登录 43 Roboware 开发 一 odroid xu4安装ROS melodic二 远程登录odroid xu41 odroid xu4自动登录2 odroid xu4配置固定
  • Vector 简介和优缺点

    引用 xff1a https blog csdn net taiyang1987912 article details 50351827 vector向量相当于一个数组 在内存中分配一块连续的内存空间进行存储 支持不指定vector大小的存
  • PC电脑控制手机iphone(iOS 11、iOS 12、iOS 13),需越狱

    Veency是一款可以用电脑控制你的iPhone的插件 xff0c 作者是大名鼎鼎的Cydia的创始人Jay Freeman xff0c 也就是Saurik 但是最高支持到IOS9 xff0c 在IOS 10以上无法使用 基于Veency
  • 【Windows】Shellcode免杀,过360、火绒、Defender 静态及主防

    Shellcode xff0c 顾名思义是一段拿来执行的代码片段 xff0c 我们可以使用Shellcode来完成我们需要的任务 弹窗的代码 xff0c 可以被认为是一段Shellcode xff0c 获取某个模块的基址的代码 xff0c
  • Metasploit体系结构和目录

    一 Metasploit体系结构 一 xff09 基础库文件 metasploit基础库文件位于源码根目录路径下的libraries目录中 xff0c 包括Rex framework core和framework base三部分 Rex是整
  • Metasploit Framework Handbook

    文章目录 前言MsFrameworkMetasploit诞生发展体系结构功能阶段工具管理基本命令情报搜集网络服务渗透测试 Refference 前言 众所周知Metasploit工具是一款强大的渗透测试利器 xff0c 在渗透测试中堪称一条
  • 简单无锁队列的实现和使用

    无锁队列越来越流行 xff0c 在特定的场合使用不同的无锁队列 xff0c 可以起到节省锁开销 xff0c 提高程序效率 Linux内核中有无锁队列的实现 xff0c 可谓简洁而不简单 核心判断部分利用了整数溢出机制 xff0c 这个有很多
  • 关于网狐棋牌6603源码的整理、编译和搭建

    最近换工作 xff0c 趁着有一段清闲时间 xff0c 整理了一下网狐棋牌的源码 xff0c 这份源码下载很久了 xff0c 一直呆在硬盘 这次正好好好看看 网狐的代码质量很高 xff0c 流露出来的代码也比较完整 xff0c 基本上都能编
  • Pycharm:注释、删除所有注释

    1 单行注释 2 39 39 39 多行注释 39 39 39 3 删除所有注释 CTRL 43 R进入替换模式 xff0c 勾选右上角正则表达式 xff0c 然后在搜索框输入 xff0c Replace All即可
  • Outlook 2016 pst/ost邮件数据文件迁移实现

    当使用outlook 2016新建Email账户的时候 xff0c 其数据文件 xff08 ost文件 xff09 总是被保存在C盘默认目录 C Users 用户名 AppData Local Microsoft Outlook 下 xff
  • 跟我一起学习VIM - vim插件合集

    前两天同事让我在小组内部分享一下VIM xff0c 于是我花了一点时间写了个简短的教程 虽然准备有限 xff0c 但分享过程中大家大多带着一种惊叹的表情 xff0c 原来编辑器可以这样强大 xff0c 这算是对我多年来使用VIM的最大鼓舞吧
  • linux最简单搭建邮件服务器

    一 概述 xff1a 在配置邮件服务器之前 xff0c 先解释几个概念 通常使用Email都很容易 xff0c 但是Internet的邮件系统是通过几个复杂的部分连接而成的 xff0c 对于最终用户而言 xff0c 我们熟悉的Outlook