1.配置邮件交换记录:

2.配置邮件服务器

我们先查看一下mail目录下的文件,我们一会将会对它们进行更改
[root@tpwb ~]# cd /etc/mail
[root@tpwb mail]# ls
access         helpfile              Makefile          submit.cf          virtusertable
access.db          local-host-names  sendmail.cf   submit.cf.bak  virtusertable.db
domaintable         mailertable          sendmail.mc  submit.mc
domaintable.db  mailertable.db        spamassassin  trusted-users
1、access 数据库文件,用于配置邮件中继。
2、sendmail.mc,sendmail的主要配置文件。
3、local-host-names域名文件 可以用他来实现虚拟域名或多域名支持。
4、mail别名文件aliases。
5、邮件控制文件
relay、ok、reject和discard。
relay: 可以实现转发。
ok: 是用来允许用户的任意访问,它会覆盖任何其它已建立的检查(实际设置中,最好不要设为这项,除非你对该用户是绝对信任的);
reject: 可以实现对来访地址的拒绝,它根本就不容许该地址与你的邮件服务器进行连接通信;
discard: 的作用是在接收到传输的邮件消息后,把它丢弃掉。在发送者看来,他的邮件的确是接收了,但他并不知道,发送的目的地址根本不可能接收到他的邮件,服务器巧妙地欺骗了他。
我在这里这是简单介绍一下,详细的解释自己去查找资料,我以后也会在写关于服务器相关术语的文章。
我们首先看一下sendmail.mc这个文件的内容
[root@tpwb ~]# cat /etc/mail/sendmail.mc
.......
include(`/usr/share/sendmail-cf/m4/cf.m4')dnl   (将sendmail-cf/m4/cf.m4包含进来)
VERSIONID(`setup for Red Hat Linux')dnl (定义版本信息)
OSTYPE(`linux')dnl (选择包含操作系统指定属性的文件)
........
define(`confDEF_USER_ID',``8:12'')dnl (指定使用的用户ID为8,组ID为12)
dnl define(`confAUTO_REBUILD')dnl
define(`confTO_CONNECT', `1m')dnl   (设置等待连接的最大时间为1分钟)
define(`confTRY_NULL_MX_LIST',true)dnl (若MX记录指向本机,则sendmail直接连接到远程主机)
define(`confDONT_PROBE_INTERFACES',true)dnl (sendmial不会自动将服务器的网络接口视为有效地址)
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl(设置procmail的存放路径)
define(`ALIAS_FILE', `/etc/aliases')dnl (设置邮件别名存放路径)
define(`STATUS_FILE', `/var/log/mail/statistics')dnl
define(`UUCP_MAILER_MAX', `2000000')dnl (设置处理信息的最大限制为2M)
define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl (设置用户数据库文件路径)
define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl (设置限制某些邮件命令的标志)
define(`confAUTH_OPTIONS', `A')dnl 仅在授权成功时。将AUTH参数加到邮件的消息头中
.......
FEATURE(`no_default_msa',`dnl')dnl (允许MSA被DAMEMON_OPTION覆盖的默认设置)
FEATURE(`smrsh',`/usr/sbin/smrsh')dnl (设置邮件发送器smrsh的存放路径)
FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl (设置邮件发送器数据库的存放路径)
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')dnl (设置虚拟邮件域数据库的存放路径)
FEATURE(redirect)dnl (支持.redirect虚拟域)
FEATURE(always_add_domain)dnl (增加主机名到所有本地发送的邮件)
FEATURE(use_cw_file)dnl (装载/etc/mail/local-host-names文件中定义的主机名)
FEATURE(use_ct_file)dnl  (装载可信任用户名单)
........
FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')dnl (使用procmail作为本地邮件发送者)
FEATURE(`access_db',`hash -T<TMPF> -o /etc/mail/access.db')dnl (从/etc/mail/access.db装载可以中继的域)
FEATURE(`blacklist_recipients')dnl (根据访问数据库的值过滤外来邮件)
EXPOSED_USER(`root')dnl (禁止伪装发送者地址中出现root用户)
........
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl (指定sendmail作为MTA运行时的参数)
........
FEATURE(`accept_unresolvable_domains')dnl 设置可以接受不能由NDS主机所发送的邮件
........
LOCAL_DOMAIN(`localhost.localdomain')dnl 设置本地域
........
MAILER(smtp)dnl (指定sendmail所有SMTP发送者,包括smtp,esmtp,smtp8,和replay)
MAILER(procmail)dnl (指定使用procmail作为本地邮件的发送者)
[root@tpwb ~]# vi /etc/mail/sendmail.mc
由于邮件服务器默认只对本地回环网络提供邮件服务,所以我们把上面的
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
改为
DAEMON_OPTIONS(`Port=smtp,Addr=邮件服务器的ip, Name=MTA')dnl
sendmail.cf是一般人不能看懂的,所以我们要用m4(宏配置)对/etc/mail/sendmail.mc修改来完成对sendmail.cf的修改。
[root@tpwb mail]# # m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
[root@tpwb mail]#
如果在执行m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf 报错的话,那么检查是否安装sendmail-cf.*.rpm是否安装:
下面要对local-host-names进行修改
[root@tpwb mail]# vi local-host-names
# local-host-names - include all aliases for your machine here.
tpwb.cn 加入你的域名,这个是我的。
"local-host-names" 3L, 73C written                                
[root@tpwb mail]#
由于sendmail默认是不转发邮件的,所以我们在这个文件中加入211.101.46,使它为211.101.46.1
这个网段转发邮件
[root@tpwb mail]# vi access
# Check the /usr/share/doc/sendmail/README.cf file for a description
# of the format of this file. (search for access_db in that file)
# The /usr/share/doc/sendmail/README.cf is part of the sendmail-doc
# package.
#
# by default we allow relaying from localhost...
localhost.localdomain               RELAY
localhost                         RELAY
211.101.46.                       RELAY
126.com                         RELAY
163.com                         RELAY
sohu.com                        RELAY
sian.com                    DISCARD
wanghui1981912@126.com          REJECT
这里表示允许本机和211.101.46.0/24网段中的机为允许进行中继(设为RELAY)
同样把126,163,搜狐的邮箱设为可以转发,
阻挡新浪邮箱的地址进行转发。同时不在RELAY范围的邮箱地址都不会进行转发。
阻挡wanghui1981912@126.com 的邮箱地址
建议大家可一个一个试一下,看看是否达到了允许,阻挡的效果。我通过测试后,全部正确。当然要在都配置完在测试,好,我们继续
保存,
同时再将access的内容导入access.db实现对access.db的配置(因为access.db不能直接进行更改,所以使用导入的方式实现配置),命令如下
[root@tpwb mail]# makemap hash access.db < access
You have new mail in /var/spool/mail/root
大家可以看到当我配置到这里时,root已经收到了一封邮件。
重新一下sendmail服务器。
[root@tpwb mail]# service sendmail restart
Shutting down sendmail: [  OK  ]
Shutting down sm-client: [  OK  ]
Starting sendmail: [  OK  ]
Starting sm-client: [  OK  ]
[root@tpwb home]# netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address                   Foreign Address                 State          
.......     
tcp          0          0 211.101.46.251:smtp             *:*                             LISTEN                                  
......
SMTP已经开启。
在来检查smtp25端口是否打开)
[root@tpwb home]# netstat -tnl | grep :25
tcp            0          0 211.101.46.251:25               0.0.0.0:*                       LISTEN          
关掉放火墙:
[root@tpwb etc]# service iptables stop
Flushing firewall rules: [  OK  ]
Setting chains to policy ACCEPT: filter [  OK  ]
Unloading iptables modules: [  OK  ]
到此我们完成了一半的工作。我们可以正常发送邮件了
可以用OUTLOOK试一下,但还不能接受,
我们继续….
修改/etc/dovecot.conf文件
将:
#protocols = imap imap3
更改为:
protocols = imap imap3 pop3 pop3s (启动imap imap3 pop3 pop3s功能)
[root@tpwb etc]# vi dovecot.conf
## Dovecot 1.0 configuration file
......
#  imap imaps pop3 pop3s
protocols = imap imaps pop3 pop3s  去掉前面的#
......
保存
重新启动一下POP3
[root@tpwb etc]# service dovecot restart
Stopping Dovecot Imap: [FAILED]
Starting Dovecot Imap: [  OK  ]
查看一下
[root@tpwb etc]# netstat -nl
......     
tcp     0     0 :::110     :::*                LISTEN          
在来看一下pop3110端口是否打开
[root@tpwb etc]# netstat -tnl | grep :110
tcp            0          0 :::110                          :::*                            LISTEN    
呵呵,好了,如果你还不会,我无语了。
这样接受,发送邮件都可以了 我们在用outlook试一下。
(三)配置带认证的sendmail邮件服务器
在网上看了许多的文章,还是觉得说的的不清楚,可以说也走了一些弯路.最后还是搞定了.
首先我们先要了解一下sendmail的工作原理:(建议先看一下)
sendmail的工作方法是根据用户的电子邮件的地址,为用户的邮件选择一条到达适当的目的传输程序的路由.它接受来自一个MUA的的邮件, 解释其邮件地址,将该地址重新改写成合适下一个传输程序的格式,然后引导邮件到达正确的传输程序.sendmail将最终用户与这些细节隔离.如果邮件地 址正确,sendmail就认为其可以正确的发送并进行传输.同样对于一个进入的邮件,sendmai将先解释其地址,然后将邮件传送到用户的邮件程序或 发送到另一个系统.
我们为什么要配置带认证的sendmail.道理很简单:
为了让合法或允许的用户采用通过我们配置的sendmail邮件服务器进行接发邮件.
而其他一些非法,匿名,或无正确密码的用户不能通过它来接发邮件.
我们首先来看一下我们在没有配置带认证的sendmail 是什么情况,我们在配置outlook的时候,不勾选"我的服务器需要身份验证",我们发现:一个非法用户,没有输入密码的情况下,依然可以正常收发邮件.这些我都做过了测试.这是我们不愿看到的.
可以说现在我的目的已经很明确了.
好,现在开始吧
在配置前,你要确定一下你的sasl(SASL的英文全称是 Simple Authentication and Security Layer,简单验证和安全层。SMTP协议并没有提供用户验证功能,很容易匿 名中转邮件。即使限制了可以转发的网段,也不安全。他的定义 是: a method for adding authentication support to connection- based protocols,为基于连接的协议提供认证功能。)是否安装.
[root@tpwb mail]# rpm -qa | grep sasl
cyrus-sasl-ntlm-2.1.19-5.EL4
cyrus-sasl-2.1.19-5.EL4
cyrus-sasl-gssapi-2.1.19-5.EL4
cyrus-sasl-plain-2.1.19-5.EL4
cyrus-sasl-md5-2.1.19-5.EL4
cyrus-sasl-devel-2.1.19-5.EL4
cyrus-sasl-sql-2.1.19-5.EL4
我的是默认安装的,版本可能不一样.在这里我不讲如何安装
好,我们依然要编辑sendmail.mc这个文件
[root@tpwb mail]# vi sendmail.mc
....
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
TRUST_AUTH_MECH”的作用是使sendmail不管access文件中如何设置,都能 relay 那些通过EXTERNAL, LOGIN, PLAIN, CRAM-MD5或DIGEST-MD5等方式验证的邮件,”
confAUTH_MECHANISMS" 的作用是确定系统的认证方式。Outlook Express支持的认证方式是LOGIN。
....
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl (让sendmail监听所有网段)
....
DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl
....
我只做了四处更改,去掉前面的#,dnl(红色部分).
至于蓝色部分,有的文章说改成:
DAEMON_OPTIONS(`Port=25, Name=MSA')dnl
但经我测试,把端口该成25后,不能进行正常的发送邮件,总是提示25端口错误的信息.所以我没有做更改.
只需去掉前名的#,dnl.
修改后,保存.
[root@tpwb mail]# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
删掉我们前面对access的修改,把所有的修改都删除。和我的一样。
[root@tpwb mail]# vi /etc/mail/access
# package.
#
# by default we allow relaying from localhost...

~
~
~
[root@tpwb mail]# makemap hash access.db < access
[root@tpwb mail]# service sendmail restart
Shutting down sendmail: [  OK  ]
Shutting down sm-client: [  OK  ]
Starting sendmail: [  OK  ]
Starting sm-client: [  OK  ]
[root@tpwb mail]# service dovecot restart
Stopping Dovecot Imap: [  OK  ]
Starting Dovecot Imap: [  OK 
配置到这里,你可以通过Outlook设置:
工具---账户---属性---服务器,
把我的服务器要求身份验证选项选上
但你会发现它会反复提示你输入密码(即使是正确的密码)
所以要在把SASL开启
[root@tpwb mail]# service saslauthd status
saslauthd is stopped
[root@tpwb mail]# service saslauthd start
Starting saslauthd: [  OK  ]
在来试一下,是不是已经好了,只有正确的用户和密码才可以进行邮件的接受.
我们这里的合法用户就是linux系统的用户和密码.

(四)sendmail邮件服务器优化
1,转发邮件速度
2,邮件大小
[root@tpwb mail]# vi sendmail.mc
....
define(`UUCP_MAILER_MAX', `5000000')dnl  默认是2000000(2M)
....
3,mail别名
编辑/etc/alias 文件

4,设置群发
[root@tpwb mail]# vi sendmail.mc
任意地方加入,启动多邮件队列,获得更好的传输性能
define(QUEUE_DIR, `/var/spool/mqueue/q*')
另外在/var/spool/mqueue/下创建任意多个队列目录,运行:
[root@tpwb mail]# cd /var/spool/mqueue
[root@tpwb mail]# mkdir q1 q2 q3 q4 q5 q6
5,access和sendmail认证一起,打造更加完善的要求
在前一篇文章中的sendmial带认证配置,我们不需要把RELAY的 邮件地址或域名写入到access中,sendmail会默认接发任何邮箱地址,也就是说我们不用声明了,不用配置access文件。但合理的利用 access可以使我们更好的防止一些垃圾邮件,或者我们不想接受的邮件。如果你不想接受@126邮件,那么你只需要如下配置:
[root@tpwb mail]# vi /etc/mail/access
# Check the /usr/share/doc/sendmail/README.cf file for a description
# of the format of this file. (search for access_db in that file)
# The /usr/share/doc/sendmail/README.cf is part of the sendmail-doc
# package.
#
# by default we allow relaying from localhost...
localhost.localdomain               RELAY
localhost                           RELAY
126.com                             DISCARD 加入126.com
[root@tpwb mail]# makemap hash access.db < access
[root@tpwb mail]# service sendmail restart
Shutting down sendmail: [  OK  ]
Shutting down sm-client: [  OK  ]
Starting sendmail: [  OK  ]
Starting sm-client: [  OK  ]
然后测试一下,是不是不能对126的邮箱接发邮件了!
我们现在可以了解带认证的sendmail邮件服务器的工作过程
1,如果接发的邮件是本地域的,运行2,如果不是,(@126,@sohu.com等)去access里查找,看是否被限制。符合就运行2,
2,sasl认证帐户和密码是否正确,是否合法。符合转发。

转载于:https://blog.51cto.com/ryan0817/482195

sendmail配置相关推荐

  1. Linux关于Sendmail配置错误的问题

    2019独角兽企业重金招聘Python工程师标准>>> 查看错误提示 本文中所有图片都是是我好友向我询问此类问题发给我的 sendmail.mc:10: m4: cannot ope ...

  2. Sendmail配置以及验证成功

    Sendmail服务安装,已经安装了sendmail,没有安装的可以用yum安装 yum install sendmail sendmail-cf -y 配置 2018skills.com和lin.2 ...

  3. nagios+sendmail配置

    以下为自己安装测试过的,如果有问题,大家一起讨论 系统环境:centos6.2 64位 最小化安装 一 安装nagios 见附件:nagios官方文档(nagios_nrpe20120929_web. ...

  4. Linux mail命令使用和sendmail配置

    linux mail 命令参数: 使用mail发邮件时,必须先将sendmail服务启动. mail –s "邮件主题" –c"抄送地址" –b "密 ...

  5. sendmail配置详解

    sendmail 软件包 sendmail.i386 sendmail-cf.i386 sendmail-devel.i386 sendmail-doc.i386 m4 dovecot (pop3服务 ...

  6. Linux服务器使用php发送邮件,sendmail配置

    在使用医学研究数据收集系统REDCap应用时,需要使用邮件服务来发送用户注册.密码修改.项目信息等邮件,因此必须配置好sendmail功能.经过多次摸索以及请教各路专家,找到两个解决方案.总结如下. ...

  7. linux sendmail配置,linux系统SendMail详细配置

    1. 安装相关服务 DNS Mailserver(sendmail.imap) 2. 启动相关服务 Service named restart Service sendmail restart Ser ...

  8. PHP sendmail配置

    sendmail.exe是一个简单的windows控制台应用程序,它模拟了sendmail的选项,用于传递通过stdin传输的电子邮件.-t 它旨在简化已硬编码为电子邮件传递手段的unix代码的运行. ...

  9. 配置不成功_在windows下配置sendmail服务器

    终于还是成功了,差点没放弃.由于之前在做一个异常处理的时候用到了邮件提醒功能,所以顺便研究了一下在php下如何发送邮件. 第一次摸索,折腾了整整一天,最后还是成功了.现做个经历总结,方便大家交流,初次 ...

最新文章

  1. android从放弃到精通 第七天 tomorrow
  2. 使用Pandas进行变量衍生
  3. 数据库密码过期 怎么修改
  4. 微信小程序通过getUserProfile和wx.login获取后端的token
  5. 如何解决ajax跨域问题(转)
  6. 给萌新的Flexbox简易入门教程
  7. STL vector的迭代器的熟练运用及lower_bound和upper_bound的使用
  8. iPad 隐藏按钮获取函数
  9. laravel响应速度慢
  10. html谷歌浏览器实现自动播报语音,vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法...
  11. 第二章 确定性知识系统
  12. 启用特殊池解读 0x000000c5 蓝屏
  13. Charles华为手机保姆级安装过程
  14. 很抱歉,EXCEL遇到错误,使其无法正常工作,因此需要关闭EXCEL。是否希望我们立即修复?...
  15. ERP现状及未来发展趋势分析?
  16. #智能宿舍门禁 esp8266+RC522模块+DFPlay Mini Mp3模块实现宿舍智能门锁//NFC//物联网
  17. Android 之路18---Java基础12
  18. 算法基础:圣诞老人的礼物--贪心
  19. element组件------form
  20. C++面向对象程序设计 学习心得

热门文章

  1. 如何使用git merge --squash?
  2. Win10电脑如何合并磁盘分区
  3. js获取url上的数据;angularjs获取url上的参数
  4. 电子信息计算机调剂到能源动力,江苏科技大学机械、电子信息、电子信息能源动力、土木水利2020年考研调剂信息...
  5. iphone怎么重启_iPhone看完这个都要卡死机!这串神秘代码,是真的有毒
  6. 标题、段落标签(HTML)
  7. Open3d之文件IO
  8. 奇异值分解(SVD)原理
  9. 解决只能滑动弹框内容不能滑动弹框底层内容
  10. Object.preventExtensions()使用技巧