热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Linux系统中安装配置sendmail邮件服务器

随着互联网的发展,e-mail迅速成长成为主要的网络信息传递工具。面对大量要求能够快速,廉价,和高可信赖的e-mail需求,很多公司和个人都把linux提供的服务作为满足这些需求的解决方案。SendMail最初是1979年由EricAllman编写而成。它起先运行在BSD4.0平台上
随着互联网的发展,e-mail迅速成长成为主要的网络信息传递工具。面对大量要求能够快速,廉价,和高可信赖的e-mail需求,很多公司和个人都把linux提供的服务作为满足这些需求的解决方案。 SendMail最初是1979年由Eric Allman编写而成。它起先运行在BSD 4.0平台上。但这个程序不够灵活,每次编译的时候都需要重新配置。随着TCP协议和其他方面的发展,它本身的不灵活性已经明显不能满足日益增长的需求。Eric Allman决定重新编写SendMail,从而诞生了现在的MTA标准。这是对SendMail的简短介绍.我们这篇文章主要是示范如何在一台新装的redhat 7.1上用配置SendMail8.11.2 服务,构架你的e-mail服务器.
redhat7.1默认安装的时间已经安装了SendMail 8.11服务.因为redhat安装使用都非常的简单,我们这里就忽略安装过程,相关资料请查阅redhat CD里的文档.要使你的新e-mail服务器正常工作,必须先解决DNS问题.把你的e-mail服务器的主机名和ip地址加入到DNS中,并用nslookup来确认:
[root@testmail /root]# nslookup -sil testmail.blank.com
Server: 192.168.100.1
Address: 192.168.100.1#53
Name: testmail.blank.com
Address: 192.168.100.134
同样你也要试一下反向域名解析,这个对防止邮件延迟有很重要的作用.现在大部分的邮件服务器都是把反向域名解析作为邮件传送时认证的一部分.所以用的你ip地址来试一下反向域名解析是否正确.
[root@testmail /root]# nslookup -sil 192.168.100.134
Server: 192.168.100.1
Address: 192.168.100.1#53
134.100.168.192.in-addr.arpa name = TESTMAIL.blank.com.
正如你所看到的,DNS服务工作正常,接下去就让我们动手来配置SendMail服务.redhat 7.1 默认安装已经可以使SMTP服务在本机运行.
你用netstat -nl可以看到所有后台程序监听的端口,注意这一行:127.0.0.1:25,这个表示SendMail服务已经在监听本机的25(SMTP)端口了:
[root@testmail /root]# netstat -nl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:32768 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
udp 0 0 0.0.0.0:32768 0.0.0.0:*
udp 0 0 0.0.0.0:667 0.0.0.0:*
udp 0 0 0.0.0.0:111 0.0.0.0:*
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 1119 /dev/gpmctl
unix 2 [ ACC ] STREAM LISTENING 1172 /tmp/.font-unix/fs7100
但这个仅仅表示e-mail服务器只接收你本机的邮件.为了解决这个问题,你必须修改配置,告诉SendMail去监听你对外的网卡地址.假设你的服务器上只安装了一块网卡(eth0),并用ifconfig配置好你的ip地址.这个地址可以和DNS解析的地址不一样,但你要保证DNS可以正确地解析邮件服务器的地址.这里我们使用的地址是一样的(推荐):
[root@testmail /root]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:60:97:DE:E9:99
inet addr:192.168.100.134 Bcast:192.168.100.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:12421 errors:0 dropped:0 overruns:0 frame:0
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:10 Base address:0xe000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
可以看到这台主机的eth0的ip地址是192.168.100.134.现在修改/etc/SendMail.cf文件来配置SendMail的监听端口:
# SMTP daemon options
O DaemOnPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA
更改为
O DaemOnPortOptions=Port=smtp,Addr=192.168.100.134, Name=MTA
改完后保存退出,并且重新启动SendMail服务:
[root@testmail /root]# /etc/init.d/SendMail restart
Shutting down SendMail: [ OK ]
Starting SendMail: [ OK ]
[root@testmail /root]#
现在可以用netstat -nl来查看是不是已经更改了.如你所看到的,SendMail的监听端口现在是eth0的ip地址:192.168.100.134了.
[root@testmail /root]# netstat -nl
Active Internet connections (only servers)
Proto Recv-Q send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:32768 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 192.168.100.134:25 0.0.0.0:* LISTEN
udp 0 0 0.0.0.0:32768 0.0.0.0:*
udp 0 0 0.0.0.0:667 0.0.0.0:*
udp 0 0 0.0.0.0:111 0.0.0.0:*
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 1119 /dev/gpmctl
unix 2 [ ACC ] STREAM LISTENING 1172 /tmp/.font-unix/fs7100
[root@testmail /root]#
///////////////////////////////////////////////////////////////
现在SendMail已经可以接收来自外部的连接了.我们还需要设定SendMail允许接收的域名.这个可以在/etc/mail/local-host-names文件中设定.就把域名输入进去就可以了:
# local-host-names - include all aliases for your machine here.
blank.com
保存退出后重新启动SendMail服务:/etc/init.d/SendMail restart .这样SendMail就可以接收来自多个域的信件了.
如果你需要再增加新的域,只有修改这个文件就可以了.
现在的e-mail服务器在本机上已经可以完全正常的工作.它已经可以接收来自任何地方的信件(允许的域),但如果想要发送和传递邮件,则必须在这台电脑上执行.如果你的用户都直接登录到你的服务器上来发送邮件,则不需要更改任何配置,如果你希望大部分或者所有的用户可以在远程主机上使用该e-mail服务器,例如利用KMail和Outlook Express等客户端工具,则你必须更改配置来允许这些主机使用你的e-mail服务器.你需要在/etc/mail/access文件中加入下面一行,保存后运行make access.db 的命令来生成access.db文件.
blank.com RELAY
改完后的access文件应该是这样的:
# Check the /usr/share/doc/SendMail-8.11.2/README.cf file for a
description
# of the format of this file. (search for access_db in that file)
# The /usr/share/doc/SendMail-8.11.2/README.cf is part of the
SendMail-doc
# package.
#
# by default we allow relaying from localhost...
localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY
blank.com RELAY
然后运行:
[root@testmail mail]# make access.db
[root@testmail mail]#
这个make access.db命令把你的新的设定添加到SendMail的hash数据库里.SendMail用它来判断允许那些主机通过你的e-mail服务器来传递邮件.而且这样还可以通过设定子网(例如:192.168)来限制该域.但你要注意,这样设定就对外开放了,可能会有人发大量的垃圾信件来攻击你的系统.
现在你可以收到所有来自外部的邮件.并且允许信赖的客户在远程传递信件.接下去你想要做的可能是如何在远程收取这些信件.要达到这个目的,你需要安装IMAP或者POP. redhat 7.1 默认安装的时候并没有安装POP/IMAP,所以你需要安装imap-2000-9 rpm包.要查看这个包的安装状态,可以用下面的命令:rpm -aq | grep -i imap.如果发现没有安装,那就把redhat 7.1第二张安装光盘放到光驱里.然后运行如下命令:
[root@testmail mail]# mount /dev/cdrom /mnt/cdrom
mount: block device /dev/cdrom is write-protected, mounting read-only
(Successful Mount of Read-Only Media)
mount上光盘后运行这个命令来安装这个包:rpm -Uvh /mnt/cdrom/RedHat/RPMS/imap-2000-9.i386.rpm.
[root@testmail mail]# rpm -Uvh /mnt/cdrom/RedHat/RPMS/imap-2000-9.i386.rpm
Preparing... ########################################### [100%]
1:imap ########################################### [100%]
再运行一次 rpm -aq | grep -i imap
IMAP 包就罗列出来了。
[root@testmail mail]# rpm -aq | grep -i imap
imap-2000-9
[root@testmail mail]#
当正确的包被安装后你要打开POP3的连接端口,这需要修改/etc/xinetd.d/下面的ipop3文件,把disable的值改成no。这个文件大致是这样的:
# default: off
# description: The POP3 service allows remote users to access their mail
# using an POP3 client such as Netscape Communicator, mutt,
# or fetchmail.
service pop3
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/ipop3d
log_on_success += USERID
log_on_failure += USERID
disable = no
}
接下去重新启动xinetd来是它生效:
[root@testmail xinetd.d]# /etc/init.d/xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
[root@testmail xinetd.d]#
现在就可以发送一封测试邮件到你的e-mail服务器,并且用你熟悉的收信工具来收取这封信。应该是没有问题的。
下面优化一下服务器的性能。或许你会收到这样的抱怨,说是当客户端程序运行在防火墙后面的话会发生连接pop端口速度变慢。
造成这个延时的原因是你的e-mail服务器初始一个IDENT会话来确认客户端的身份。如果这个询问没有反应,那服务器就会在5秒后发出一个超时信号。这个值可以降低到1秒,从而减少IDENT产生影响。修改/etc/SendMail.cf文件,把timeout的值改成你想要的值。
# timeouts (many of these)
#O Timeout.ident=5s
change to
O Timeout.ident=1s
现在你的e-mail服务器可以给你的用户提供服务了。当然还有更多的配置可以用来提高服务器性能,在这篇文章中就不多提了。Linux将会为你的e-mail服务提供一个稳定的,高效的平台。如果想了解更多的关于SendMail的知识,请访问www.SendMail.org.

推荐阅读
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • Node.js在服务器上的多种部署策略
    本文探讨了Node.js应用程序在服务器上部署的几种有效方法,包括使用Screen、PM2以及通过宝塔面板进行简易管理。 ... [详细]
  • 对于初学者而言,搭建一个高效稳定的 Python 开发环境是入门的关键一步。本文将详细介绍如何利用 Anaconda 和 Jupyter Notebook 来构建一个既易于管理又功能强大的开发环境。 ... [详细]
  • 本文详细介绍了如何在Oracle VM VirtualBox中实现主机与虚拟机之间的数据交换,包括安装Guest Additions增强功能,以及如何利用这些功能进行文件传输、屏幕调整等操作。 ... [详细]
  • 本文介绍了SIP(Session Initiation Protocol,会话发起协议)的基本概念、功能、消息格式及其实现机制。SIP是一种在IP网络上用于建立、管理和终止多媒体通信会话的应用层协议。 ... [详细]
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 本文通过分析一个具体的案例,探讨了64位Linux系统对32位应用程序的兼容性问题。案例涉及OpenVPN客户端在64位系统上的异常行为,通过逐步排查和代码测试,最终定位到了与TUN/TAP设备相关的系统调用兼容性问题。 ... [详细]
  • linux网络子系统分析(二)—— 协议栈分层框架的建立
    目录一、综述二、INET的初始化2.1INET接口注册2.2抽象实体的建立2.3代码细节分析2.3.1socket参数三、其他协议3.1PF_PACKET3.2P ... [详细]
  • 本文详细介绍了如何在ARM架构的目标设备上部署SSH服务端,包括必要的软件包下载、交叉编译过程以及最终的服务配置与测试。适合嵌入式开发人员和系统集成工程师参考。 ... [详细]
  • 本文介绍了实时流协议(RTSP)的基本概念、组成部分及其与RTCP的交互过程,详细解析了客户端请求格式、服务器响应格式、常用方法分类及协议流程,并提供了SDP格式的深入解析。 ... [详细]
  • 如题:2017年10月分析:还记得在没有智能手机的年代大概就是12年前吧,手机上都会有WAP浏览器。当时没接触网络原理,也不 ... [详细]
  • DNS服务一、概述1.全称:Domainnamesystem(域名系统)2.作用:1)正向解析: ... [详细]
  • Python学习day3网络基础之网络协议篇
    一、互联网协议连接两台计算机之间的Internet实际上就是一系列统一的标准,这些标准称之为互联网协议,互联网的本质就是一系列网络协议。二、为什么要有互联网协议互联网协议就相当于计 ... [详细]
  • http:blog.csdn.netzeo112140articledetails7675195使用TCPdump工具,抓TCP数据包。将数据包上传到PC,通过Wireshark查 ... [详细]
  • ipsec 加密流程(二):ipsec初始化操作
    《openswan》专栏系列文章主要是记录openswan源码学习过程中的笔记。Author:叨陪鲤Email:vip_13031075266163.comDate:2020.1 ... [详细]
author-avatar
手机用户2502896697
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有