sendmail服务器案例配置
Linux/UNIX下的老牌邮件服务器。Sendmail作为一种免费的邮件服务器软件,已被广泛的应用于各种服务器中,它在稳定性、可移植性、及确保没有bug等方面具有一定的特色,且可以在网络中搜索到大量的使用资料。
实验拓扑图:
注:163主机与sina主机的hostname千万不要相同,也可以自己修改成相应的域名,如hostname本来为localhost.localdomain,改为mailserver.163.com(名字可自己定义,通常是: 主机名称 . 域名)
一、163.com域dns、mail服务器配置
1.安装配置dns
修改/var/named/chroot/etc/named.conf文件,
修改named.rfc1912.zones,添加如下内容:
zone "163.com" IN {
type master;
file "163.com.zone";
allow-update { none; };
};
zone "142.168.192.in-addr.arpa" IN {
type master;
file "192.168.142.local";
allow-update { none; };
};

引动dns服务,并设置开机启动
[root@host etc]# service named start
启动 named: [确定]
[root@host etc]# chkconfig named on
2.好下面来安装并配置sendmail吧
首先采用yum安装这四个相关包:
sendmail、sendmail-cf、dovecot [接收邮件 pop3/imap]、m4 (负责转化,使用修改sendmail.mc--通过转换来使/etc/mail/sendmail.cf生效)
修改配置文件
1)/etc/mail/sendmail.mc
116 DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
[将127.0.0.1改为0.0.0.0]
2)/etc/mail/local-host-names
# local-host-names - include all aliases for your machine here.
163.com
mail.163.com
/etc/mail/access 设置中继
3)启动sendmail和dovecot服务
[root@localhost mail]# service sendmail restart
关闭 sm-client: [确定]
关闭 sendmail: [确定]
启动 sendmail: [确定]
启动 sm-client: [确定]
[root@localhost mail]# service dovecot start
启动 Dovecot Imap: [确定]
注:Sendmail: localhost.localdomain 的问题
当你用 telnet127.0.0.1 25 测试时,若出现 localhost.localdomain, 表示 Linux Server 的 tname设定有误,这个问题并不大因为它还是可以正常的收、发e-mail. 但是, 若寄给同样是 localhost.localdomain 的 mail server时,问题就来了。
情况如下:
1. 收到退回的信件, 內容是:
553 5.3.5 对方的hostname. config error: mail loops back to me (MX problem?)
554 5.3.5 Local configuration error
2. 本机 /var/log/maillog 日志记录出现:
SYSERR(root): 对方的hostname. config error: mail loops back to me (MX problem?)
3. 对方的 /var/log/maillog 日志记录出现:
本机IP did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA
原因:
由于本机名称是localhost.localdomain, 邮件发出后, 若对方Sendma主机名称也是 localhost.localdomain 时, 信件会回到本机邮件服器上, 无法寄到对方邮箱中,
如本案例中的163.com与sina.com均是localhost.localdomain,虽然感觉可以正常发送,就是没有接收到邮件,不要急,看一下日志吧,就知道了,应该是上面例出的错误,并且邮件的状态是queued,那就按照下面的方法来修改一下主机名hostname吧,
解決方法:
1. 知道自己正确的 hostname 是什么 (通常是: 主机名称.域名, 如: local.163.com, 其中 local 是主机名称; 163.com 是域名)
2. cat /etc/sysconfig/network, 查看 hostname 是否设定正确, 若不正确请修改后, 执行:
[root@local ~]# hostname 正确的hostname
3. cat /etc/hosts 检查 127.0.0.1 那一行是否只有 localhost 与localhost.localdomain 这两种叙述. 若否, 要清除不相干的敘述,
其时也可以添加域名如: 127.0.0.1 localhost.localdomain 163.com (各自服务器的域名,也可以不加,但要加时要注意不要加主机名,如mail.163.com,这样就错了,你会发现你你邮件地址会变为user@mail.163.com,而不是你想要的user@163.com,这可能是我sendmail的设置问题,可以自己尝试一下,推荐不用修改该文件即可)
4. /etc/rc.d/init.d/sendmail restart 重新启动 Sendmail
这样就可以了,
4)使用telnet命令访问邮件服务
a.测试smtp,telnet 192.168.142.2 25

① smtp默认端口是tcp的25,所以使用telnet登录到smtp服务器的25号端口。
② 通过helo向smtp服务器表明自己的身份
③ 通过mail from 命令指定发件人为user1@163.com
④ 通过rcpt to命令指定第一个收件人为user1@163.com
⑤ 通过data命令开始写邮件正文
⑥ 写邮件正文并通过“.”命令指定邮件书写完毕。
⑦ 断开连接。
b.测试pop3
直接使用telnet命令连接到pop3服务器110端口,就可以使用如下命令操作pop3服务,

① user 用户名:指定访问pop3服务的用户名;
② pass 密码:指定访问pop3服务的密码;
③ stat: pop3服务器返回邮箱统计资料,比如邮件数、邮件总字节数等
④ uidl 邮件编号:pop3服务器返回指定邮件的惟一标识,如果不指定邮件编号,则返回所有邮件的信息
⑤ list 邮件编号:pop3服务器返回指定邮件的信息,比如大小等,如果不指定邮件编号,则返回所有邮件的信息
⑥ retr 邮件编号:pop3服务器返回指定邮件的全部文本
⑦ dele 邮件编号:pop3服务器将指定邮件标记为删除,quit命令执行时才真正删除。
⑧ rset 邮件编号:pop3服务器将指定邮件删除标记清除
⑨ top 邮件编号行数:pop3服务器返回指定邮件正文的前几行。
5)测试过了,那我们就找一个192.168.142.5的客户机来测试,先给自己发一封邮件,

6.经测试如下图,正常,也可以正常接收:

二、sina.com域dns、mail服务器配置
注:163.com域一切正常了,那就来修改一下sina.com域吧,配置方式与163.com域基本相同,就是所针对的域不同,
1.首先配置dns正向与反向
2.启动dns服务,并做反向测试

3.sendmail的安装同163.com域,针对的local-host-names不同,只需要修改如下:
/etc/mail/local-host-names
# local-host-names - include all aliases for your machine here.
sina.com
mail.sina.com
4.配置后,启动sendmail和dovecot服务。
三、测试阶段
两个域都配置完成,就来测试吧,
1.在192.168.142.10的客户机上给163.com域发送一封邮件,

2.发现如下错误:

3.因为我们没有设置dns转发,分别在各自的配置文件named.rfc1912.zones添加如下内容:
163.com
zone "sina.com" IN {
type forward;
forwarders {192.168.142.3; };
};
sina.com
zone "163.com" IN {
type forward;
forwarders {192.168.142.2; };
};
4.加上后,重启dnse服务,再次测试,发现如下图:

也可以通过/var/log/maillog日志文件来查看

5.修改/etc/mail/access,因为默认情况下是不支持中继的,
6.修改过之后就可以正常发送了,
现在到192.168.142.2的主机上163.com域上接收,但回复时也会出现如上的错误,
也在/etc/mail/access做如下修改,
7.重启sendmail服务后,发现就可以正常中继,接收邮件了,

测试正常,实验结束喽
转载于:https://blog.51cto.com/colynn/1058415
相关文章:

网页制作的中的一些工具代码
1. οncοntextmenu"window.event.returnvaluefalse" 将彻底屏蔽鼠标右键 <table border οncοntextmenureturn(false)><td>no</table> 可用于Table2. <body onselectstart"return false"> 取消选取、防止复制3. οnpaste"r…
神经网络其实和人一样懒惰,喜欢走捷径......
作者 | Jrn-Henrik Jacobsen, Robert Geirhos, Claudio Michaelis,深度学习研究专家译者 | Arvin,责编 | 夕颜出品 | CSDN(ID:CSDNnews)以下为译文:人工智能会很快取代放射科医生吗?最近,研究人…

nodejs获取ASP.Net WebAPI(IIS Windows验证)
处理了很多天,终于使用Nodejs可以发出请求至WebAPI,能够正常处理数据了 首先加入npm包 npm install httpntlm 在app.js中加入代码 var httpntlm require(httpntlm); var fs require(fs);var options {url: http://get001.mygroup.com/InstantNoodle_S…

ubb代码转化html代码
ubb代码转化html代码 public static string UbbDecode(string str){str HtmlEncode(str);str Regex.Replace(str, "/[url](?<url>.?)/[/url]", "<a href${url} target_blank>${url}</a>", RegexOptions.Compiled | RegexOptions.Ig…

如何定位EXC_BAD_ACCESS错误 (info malloc-history)
在 iphone 开发中使用内存时,我们经常会遇到 EXC_BAD_ACCESS 的错误。 出现这个错误的原因是我们访问了一个已经被释放掉的对象,如: implementation FeedbackViewController - (void)viewDidLoad {[super viewDidLoad];_scrollView [[UIScro…
一周内咸鱼疯转2.4W次,最终被所有大厂封杀!
(含答案)所有面试资料及技术好文精选文档都整理到网盘了。Java面试官手册需要加微信免费领取Java面试官手册需要加微信免费领取长按扫码或搜索微信号:gh16670101550,免费领取

java 基础知识三 java变量
1、作用域 {} 包围起来的代码称之为代码块,在块中声明的变量只能在块中使用 2、常量 就是固定不变的量,一旦被定义,它的值就不能再被改变。 3、变量 变量必须在程序中被定义(或声明)后才能使用,而且为每个变…
打通语言理论和统计NLP,Transformers/GNNs架构能做到吗?
作者 | Chaitanya K. Joshi译者 | 苏本如,责编 | 夕颜来源 | CSDN(ID:CSDNnews)我的工程师朋友经常问我:图深度学习听起来很棒,但是有没有实际应用呢?虽然图神经网络被用于Pinterest、阿里巴巴和推特的推荐…

艰辛的面向对象
为什么80%的码农都做不了架构师?>>> 所有的操作系统都不是面向对象的。 所有的操作系统都是基于函数的。ANDROID框架里面的好多类也是基于函数的。很多都是静态的方法。这个框架包括两个部分:一是JAVA部分,一是本地类。本地类不…

计算机网络第一课
1.IPv4与IPv6的区别是什么?在windows 7以上系统中,在设置本地IP地址的时候经常会看到同事含有IPV4协议项与IPV6协议项,并不同于以往windows xp系统中仅有TCP/IP协议项,不少朋友都觉得比较奇怪,询问编辑IPv4与IPv6的区别…

常用函数集农历函数
常用函数集农历函数原来是vb代码,重新整理为VB.NET版的,并在VS2003中编译通过Imports System.MathPublic Class UCnCalendarPrivate Structure SolarHolidayStructDim Month As IntegerDim Day As IntegerDim Recess As IntegerDim HolidayName As Strin…
微软发布代码智能新基准数据集CodeXGLUE,多角度衡量模型优劣
来源 | 微软研究院AI头条编者按:代码智能(code intelligence)目的是让计算机具备理解和生成代码的能力,并利用编程语言知识和上下文进行推理,支持代码检索、补全、翻译、纠错、问答等场景。以深度学习为代表的人工智能…

Spring从菜鸟到高手(四)(上)使用JdbcTemplate类实现用户登陆验证、批量更新
标签:Spring java JdbcTemplate Spring从菜鸟到高手 绝缘材料原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://tonyaction.blog.51cto.com/227462/42042看了我前面几篇文章的朋…

CSS盒模型及边距问题
盒模型是CSS的基石之一,页面的每一个元素都被看作一个矩形框,分别由外边距,边框,内边距,内容组成, 在CSS中,width和height的值指的是内容的宽高,增加外边距,边框…

区分C语言中getch、getche、fgetc、getc、getchar、fgets、gets
首先,这两个函数不是C标准库中的函数, int getch(void) //从标准输入读入一个字符,当你用键盘输入的时候,屏幕不显示你所输入的字符。也就是,不带回显。 int getche(void) //从标准输入读入一个字符&…
无限想象空间,用Python玩转3D人体姿态估计
前言姿态估计,一直是近几年的研究热点。它就是根据画面,捕捉人体的运动姿态,比如 2D 姿态估计:再比如 3D 姿态估计:看着好玩,那这玩应有啥用呢?自动驾驶,大家应该都不陌生࿰…

Mac中将delete键定义为删除键
在Mac中,delete键实际是退格键(Backspace),fndelete才是删除键。这也是从Windows转到Mac时不习惯的地方之一。 通过安装DoubleCommand软件可以解决这个问题。安装后,在System Preferences中找到DoubleCommand找打开在E…

CHIL-SQL-MIN() 函数
MIN() 函数 MIN 函数返回一列中的最小值。NULL 值不包括在计算中。 SQL MIN() 语法 SELECT MIN(column_name) FROM table_name 注释:MIN 和 MAX 也可用于文本列,以获得按字母顺序排列的最高或最低值。 SQL MIN() 实例 我们拥有下面这个 "Orders&quo…
Google排名第一的语言,引数十万人关注:搞定它,技术大牛都甘拜下风
毋庸置疑,Python越来越被认可为程序员新时代的风口语言。无论是刚入门的程序员,还是年薪百万的 BATJ 的大牛都无可否认:Python的应用能力是成为一名码农大神的必要项。 所以,很多程序员把Python当做第一语言来学习。 但对于Python…

CSS滤镜详解
CSS滤镜详解 简介〓 设置文字透明层次,模糊效果,给文字加光晕等这些本来要靠图片才能处理的效果,现在CSS可以既简单又快速的把它实现了……接着往下看就知道了。 〓正文〓 语法:STYLE"filter:filtername(fparameter1, fpa…

php实现单链表
<?php //单链表的存储结构 class Node{ public $data;//数据域 public $next;//指针域 指向下一个结点 function __construct(){ $this->data null; $this->next null; } } //单链表数据类型 class LinkList{ public $data; public $next; function _…

2017-2-23 C#基础 中间变量
用中间变量做这个题 1、“请输入年份:”(1-9999) “请输入月份:”(1-12) “请输入日期:”(要判断大小月,判断闰年) 判断输入的时间日期是否正确 2、计算输入的…

HTA的简单应用
HTA简介:HTA是HTML Application的缩写(HTML应用程序),是软件开发的新概念,直接将HTML保存成HTA的格式,就是一个独立的应用软件,与VB、C等程序语言所设计的软件没什么差别。下面是一个HTA的例子&…
300亿美元,AMD为什么要买Xilinx?
作者 | Just来源 | CSDN(ID:CSDNnews)自2015年5月,Intel(英特尔)以167亿美元收购FPGA生产商Altera后,半导体行业接连传出大整合。上个月,NVIDIA(英伟达)宣布以400亿美元收购芯片设计公司Arm&…

PIM-SSM简介
源特定组播(SSM:Source Specific Multicast)是一种区别于传统组播的新的业务模型,它使用组播组地址和组播源地址同时来标识一个组播会话,而不是向传统的组播服务那样只使用组播组地址来标识一个组播会话。SSM保留了传统PIM-SM模式中的主机显示…

MyBatis开发入门二:一对多连表查询
1. 步骤: (1). 加包(2). 编写db.properties;编写conf.xml,将db.properties加入到conf.xml;引入别名(3). 建立实体类(4). 编写sql操作对应的***Mapper.xml文件(5). 将sql操作对应的***Mapper.xml文件注册到conf.xml文件中(6). 编写…

ASP.NET里的事务处理
出自: http://blog.csdn.net/ycl111/ 事务是一组组合成逻辑工作单元的数据库操作,虽然系统中可能会出错,但事务将控制和维护每个数据库的一致性和完整性。如果在事务过程中没有遇到错误,事务中的所有修改都将永久成为数据库的一部…

JAVA的正则表达式语法
Java 正则表达式表达式意义:1.字符x 字符 x。例如a表示字符a\\ 反斜线字符。在书写时要写为\\\\。(注意:因为java在第一次解析时,把\\\\解析成正则表达式\\,在第二次解析时再解析为\,所以凡是不是1.1列举到的转义…
应届生失业率或继续上升?别怕,这份秋招指南请收好!
受疫情影响,今年的就业形势基本上没跑了:“各行各业,大小企业,全面缩招!”据国家统计局7月份的最新数据显示:20-24岁大专及以上人员(主要为新毕业大学生)失业率比去年同期高 3.3 个百…
微信小程序把玩(三十五)Video API
原文:微信小程序把玩(三十五)Video API电脑端不能测试拍摄功能只能测试选择视频功能,好像只支持mp4格式,值得注意的是成功之后返回的临时文件路径是个列表tempFilePaths而不是tempFilePath文档写的有点问题。 主要属性:…