我的企业邮箱用的是FOXMAIL的代理,只能收取邮件,不能发送邮件
首先排除是网络问题,因为可以收不能发,说明和收件服务器是连通的,网络是通的。
然后分析下错误信息,先排查下,是不是填错了发件服务器和端口。
如果确定发件服务器和端口是正确的,那要和公司的网管人员联系下,可能是邮件服务器本身发生了故障所致。
扩展资料电子邮件发送服务协议SMTP介绍:
简单邮件传输协议 (Simple Mail Transfer Protocol, SMTP)是在Internet传输email的事实标准。
SMTP是一个相对简单的基于文本的协议。在其之上指定了一条消息的一个或多个接收者(在大多数情况下被确认是存在的),然后消息文本会被传输。可以很简单地通过telnet程序来测试一个SMTP服务器。
SMTP使用TCP端口25。要为一个给定的域名决定一个SMTP服务器,需要使用MX (Mail eXchange)DNS。
在八十年代早期SMTP开始被广泛地使用。当时,它只是作为UUCP的补充,UUCP更适合于处理在间歇连接的机器间传送邮件。相反,SMTP在发送和接收的机器在持续连线的网络情况下工作得最好。
Sendmail是最早使用SMTP的邮件传输代理之一。到2001年至少有50个程序将SMTP实现为一个客户端(消息的发送者)或一个服务器(消息的接收者)。
一些其他的流行的SMTP服务器程序包括了Philip Hazel的exim,IBM的Postfix,D J Bernstein的Qmail,以及Microsoft Exchange Server。
参考资料:
我们知道,企业也可以组建自己的Internet邮件服务器,从使用的角度来看,拥有自己的邮件服务器,可以为自己的员工设置电子邮箱,还可以根据需要设置不同的管理权限等等,并且,除了一般的终端邮件程序方式(如outlook,foxmail)收发E-mail之外,还可以实现WEB方式收发和管理邮件,比一般ISP提供的电子邮箱和虚拟主机提供的信箱更为方便。
一、企业邮箱及邮件服务器的建立步骤
1、企业需要申请合法的邮件域名。
同企业网站web域名被访问一样,建立在企业邮件服务器上的企业邮件域名在Internet上是唯一的、不重复的,使全世界所有接入internet网的人都能够准确无误地相互发送邮件。
2、需要有合法的固定IP地址。
这里的固定IP地址主要是指目前在 Ipv4范围内的一个C类地址,这样的地址目前是Internet网上公认的,而且地址是越来越少。
因此,一般来说,如果要在国际互联网上建企业的E-mail服务器时,我们首先需要注册域名。我们可以去中国互联网信息中心网站(wwwcnnicnetcn)进行注册。有了域名,我们还需要有固定IP地址才能使Internet用户能够访问企业邮箱,收发邮件。固定IP地址可通过申请DDN、ADSL和某些宽带上网线路时获得。通过适当的设置,将申请的域名指向企业的合法IP地址(术语称作DNS解析),这样我们就拥有了架设在互联网上的企业邮箱。
实际操作中,我们在做好企业邮件域名和公网C类 IP地址申请后,并且映射好;接下来就是企业要选择好一台邮件服务器硬件和一套相应的邮件服务器软件,最后是将邮件软件安装配置在服务器上,接通互联网;根据对企业邮箱的规划与设计,开设企业员工的邮箱,测试邮件服务器上的企业邮箱同互联网上其他的邮件服务器的邮件收发互通,加强对企业邮箱及邮件服务器的安全和管理等,所有的这些都是我们建设企业邮箱及邮件服务器必须要做的工作。
电子邮件是互联网最基本、但却是最重要的组成部分,通过电子邮件进行方便、快捷的信息交流,已经逐渐成为企业工作中不可或缺的行为习惯。企业邮箱是指以企业的域名作为后缀的电子邮件地址,通常一个企业经常有多个员工要使用电子邮件,企业邮箱可以让邮件管理员任意开设不同名字的邮箱,并根据不同的需求设定邮箱的空间,而且可以随时关闭或者删除这些邮箱。企业电子邮箱以企业域名为后缀,既能体现公司的品牌和形象,又能方便公司管理人员对员工信箱进行统一管理,还能使公司商业信函来往得到更好更安全的管理,是互联网时代不可缺少的企业现代化通讯工具。
我们知道,企业也可以组建自己的Internet邮件服务器,从使用的角度来看,拥有自己的邮件服务器,可以为自己的员工设置电子邮箱,还可以根据需要设置不同的管理权限等等,并且,除了一般的终端邮件程序方式(如outlook,foxmail)收发E-mail之外,还可以实现WEB方式收发和管理邮件,比一般ISP提供的电子邮箱和虚拟主机提供的信箱更为方便。
一、企业邮箱及邮件服务器的建立步骤
1、企业需要申请合法的邮件域名。
同企业网站web域名被访问一样,建立在企业邮件服务器上的企业邮件域名在Internet上是唯一的、不重复的,使全世界所有接入internet网的人都能够准确无误地相互发送邮件。
2、需要有合法的固定IP地址。
这里的固定IP地址主要是指目前在 Ipv4范围内的一个C类地址,这样的地址目前是Internet网上公认的,而且地址是越来越少。
因此,一般来说,如果要在国际互联网上建企业的E-mail服务器时,我们首先需要注册域名。我们可以去中国互联网信息中心网站(wwwcnnicnetcn)进行注册。有了域名,我们还需要有固定IP地址才能使Internet用户能够访问企业邮箱,收发邮件。固定IP地址可通过申请DDN、ADSL和某些宽带上网线路时获得。通过适当的设置,将申请的域名指向企业的合法IP地址(术语称作DNS解析),这样我们就拥有了架设在互联网上的企业邮箱。
实际操作中,我们在做好企业邮件域名和公网C类 IP地址申请后,并且映射好;接下来就是企业要选择好一台邮件服务器硬件和一套相应的邮件服务器软件,最后是将邮件软件安装配置在服务器上,接通互联网;根据对企业邮箱的规划与设计,开设企业员工的邮箱,测试邮件服务器上的企业邮箱同互联网上其他的邮件服务器的邮件收发互通,加强对企业邮箱及邮件服务器的安全和管理等,所有的这些都是我们建设企业邮箱及邮件服务器必须要做的工作。
三、企业邮件服务器软件的选购
我们在选择好邮件服务器硬件后,接着就要考虑邮件软件应用系统,目前在服务器操作系统平台主要有Unix/Linux/Windows三种,Unix平台一般是针对大型企业的,具有对AIX、Solaris等操作系统比较熟悉了解的,在此基础上构建企业的邮件系统,这样邮件服务器软件主要代表有Sendmail、SUN的iPlanet Messaging Server、IBM的Domino/Notes等。
Sendmail是Unix的缺省配置中内置这个软件,只需要设置好操作系统,它就能立即运转起来。在Unix系统中,Sendmail是应用最广的电子邮件服务器软件。它也是一个免费软件,可以支持数千甚至更多的用户,而且占用的系统资源相当少。SUN的iPlanet Messaging Server是一个强大的、可靠的、大容量的Internet邮件服务器,是为企业和服务提供商设计的。它采用集中的LDAP数据库存储用户、组和域的信息,支持标准的协议、多域名和Webmail,具有强大的安全和访问控制。
Domino/Notes邮件服务器提供一个可以用于电子邮件、Web访问、在线日历和群组日程安排、协同工作区、公告板和新闻组服务的统一体系结构,它可以在企业现有的硬件、软件和网络之上运行,通过开放的标准与其他通讯系统无缝地实现互操作。
运行在Linux环境下免费的邮件服务器,或者称为MTA(Mail Transfer Agent)有若干种选择,比较常见的有Sendmail、Qmail、Postfix、exim及Zmailer等等。比较有代表性的有Qmail和Postfix。Qmail是有Dan Bernstein开发的可以自由下载的MTA,Qmail是按照将系统划分为不同的模块,有负责接收外部邮件的,有管理缓冲目录中待发送的邮件队列的,有将邮件发送到远程服务器或本地用户的这个原则进行设计,Qmail非常适合在小型系统下工作,一般只支持较少的用户或用来管理邮件列表,Qmail速度快并且简单,Qmail是企业安全且容易配置的最佳的选择。
Postfix是一个由IBM资助下由Wietse Venema 负责开发的自由软件工程的一个产物,其目的是为用户提供除sendmail之外的邮件服务器选择。Postfix力图做到快速、易于管理、提供尽可能的安全性,同时尽量做到和sendmail邮件服务器保持兼容性以满足用户的使用习惯。起初,Postfix是以VMailer这个名字发布的,后来由于商标上的原因改名为Postfix。
Postfix设计中采用了web服务器的的设计技巧以减少进程创建开销,并且采用了其他的一些文件访问优化技术以提高效率,但同时保证了软件的可靠性。Postfix的设计目标就是成为Sendmail的替代者。
Windows平台下邮件服务器软件目前是比较多的,象CommuniGate Pro、Merak Email Server Professional Suite 、Kerio Mail Server 、Microsoft Exchange、Rockliffe MailSite 、Imail Server、MDaemon、winwebmail、CMailServer等。这里我们就推荐MDaemon和 CMailServer两种邮件服务器软件。
MDaemon是一种邮件服务器端软件,和其他邮件服务器端软件相比,它除了支持比如各种邮件协议和虚拟邮件主机等常用的那些功能之外,最大的特色在于它的WebMail,有22种语言界面可供轻松转换;支持通过Web页面,在线申请新邮件帐户;Web页面中功能完整。它由美国 Alt-N 公司开发,提供专业的性能和简便的操作。通过简单的设置,它就能自动处理电子邮件,防范垃圾邮件和病毒。它经济的价格,完善的技术支持和简便的安装、配置和操作为企业提供了高性价比的邮件服务器解决方案。
邮件服务器CMailServer于2000年8月问世,是基于Windows平台的邮件服务器软件,支持互联网邮件收发、网页邮件收发(Webmail)、邮件杀毒、防垃圾邮件、邮件过滤、邮件监视、邮件备份、邮件转发、多域名邮件收发和邮件发送验证等功能,是目前国内非常流行的邮件服务器软件和下载量最大的邮件服务器软件。CMailServer以其设置简单,容易使用,出色的稳定性和灵活的web邮件服务二次开发接口在众多邮件服务器软件中一支独秀。
四、企业邮箱及邮件服务器的安全和管理
由于受到互联网上的病毒泛滥以及黑客的攻击的影响,现在的邮件服务器在安全防护技术上有了较大的提高,包括数据身份认证、传输加密、垃圾邮件过滤、邮件病毒过滤、安全审计等的多项安全技术在邮件服务器中都得到了很好的应用。
身份认证主要指SMTP发信认证,此项功能对于邮件服务器是一个可选功能,主要目的是防止黑客利用自己的服务器攻击其他邮件服务器。完善SMTP身份认证不仅可以制止黑客的恶劣行为,同时可以保证自己的邮件服务器的各种资源可以充分地应用到日常的邮件处理过程中,不会造成服务器的系统崩溃和资源浪费。无论是POP3协议还是SMTP协议,由于其在设计之初的缺陷,全部使用明码进行消息的传递,因此很容易造成信息的泄漏。我们可以通过两种方式提高系统的安全性:链路加密和端对端加密。
链路加密是使用加密工具(软硬件工具)对传输的线路进行数据加密,需要网络设施的支持。端对端加密是邮件客户端到邮件客户端的加密,是邮件服务器应当提供的功能,目前较为流行的方式是使用SSL/TLS进行传输加密。垃圾邮件大多是一些带有商业性质的广告等宣传品。此外,许多病毒以及身份证和信用卡盗用案例也与垃圾邮件有关。因此,我们需要邮件服务器具有垃圾邮件处理的功能,抵御大部分垃圾邮件的攻击。黑客攻击和病毒本来是两个相对独立的技术体系,但是随着网络的不断发展,网络工具与病毒越来越趋于融合,比如尼姆达病毒既是病毒,也是网络攻击的一种方式,而应用广泛的电子邮件,也成了病毒传播的主要方式之一。目前,大多数邮件服务器都具有了基本的病毒防护的能力。
对企业邮箱及邮件服务器的管理,我们应该要做好邮件服务器系统管理。对邮件服务器提供的各种服务连续进行工作情况记录,针形成系统运行审计历史记录文件,查找系统故障原因所在,查看邮件服务器提供的日志,对当前邮件服务器正在运行的各种服务进行实时工作情况观察,动态调整系统控制参数。我们也可以通过Web方式,监控邮件服务器的工作状态,包括在线用户数、邮件处理数量和速度、存储空间使用率等,并且可以随时对出现的发信高峰和网络攻击进行远程处理。
对于提供网络服务的系统管理员而言, 企业邮箱用户管理是最基本的管理。用户的管理首先是用户帐户的管理。通常一个用户帐户包括一系列属性, 如帐户名称、帐户登录密码、用户名称、帐户建立日期、帐户隶属的用户组、帐户电子邮箱的大小等。一个功能完备的邮件服务器产品,应该为管理员提供用户帐户管理的多种手段。现在许多邮件服务器产品除了允许管理员在本机登录进行用户信息维护外,还允许管理员使用 Web浏览器通过网络远程登录进行用户管理操作,允许用户自行维护个人帐户信息,也是邮件服务器管理中不可缺少的功能。
简单邮件传输协议(SMTP)的目标是可靠高效地传送邮件,它独立于传送子系统而且仅要求一条可以保证传送数据单元顺序的通道。附录A,B,C和D描述了不同传送服务下SMTP的使用。在名词表中还定义了本文档中使用的术语。
SMTP的一个重要特点是它能够在传送中接力传送邮件,传送服务提供了进程间通信环境(IPCE),此环境可以包括一个网络,几个网络或一个网络的子网。理解到传送系统(或IPCE)不是一对一的是很重要的。进程可能直接和其它进程通过已知的IPCE通信。邮件是一个应用程序或进程间通信。邮件可以通过连接在不同IPCE上的进程跨网络进行邮件传送。更特别的是,邮件可以通过不同网络上的主机接力式传送。
是因特网电子邮件系统首要的应用 层协议。它使用由TCP提供的可靠的数据传输服务把邮件消息从发信人的邮件服务器传送到收信人的邮件服务器。跟大多数应用层协议一样,SMTP也存在两个 端:在发信人的邮件服务器上执行的客户端和在收信人的邮件服务器上执行的服务器端。SMTP的客户端和服务器端同时运行在每个邮件服务器上。当一个邮件服 务器在向其他邮件服务器发送邮件消息时,它是作为SMTP客户在运行。当一个邮件服务器从其他邮件服务器接收邮件消息时,它是作为SMTP服务器在运行。
SMTP协议与人们用于面对面交互的礼仪之间有许多相似之处。首先,运行在发送端邮件服务器主机上的SMTP客户,发起建立一个到运行在接收端邮件服务 器主机上的SMTP服务器端口号25之间的TCP连接。如果接收邮件服务器当前不在工作,SMTP客户就等待一段时间后再尝试建立该连接。这个连接建立之 后,SMTP客户和服务器先执行一些应用层握手操作。就像人们在转手东西之前往往先自我介绍那样,SMTP客户和服务器也在传送信息之前先自我介绍一下。 在这个SMTP握手阶段,SMTP客户向服务器分别指出发信人和收信人的电子邮件地址。彼此自我介绍完毕之后,客户发出邮件消息。SMTP可以指望由 TCP提供的可靠数据传输服务把该消息无错地传送到服务器。如果客户还有其他邮件消息需发送到同一个服务器,它就在同一个TCP连接上重复上述过程;否 则,它就指示TCP关闭该连接。[1]
编辑本段2 SMTP模型
SMTP设计基于以下通信模型:针对用户的邮件请求,发送SMTP建立与接收SMTP之间建立一个双向传送通道。接收SMTP可以是最终接收者也可以是中间传送者。SMTP命令由发送SMTP发出,由接收SMTP接收,而应答则反方面传送。
一旦传送通道建立,SMTP发送者发送MAIL命令指明邮件发送者。如果
SMTP接收者可以接收邮件则返回OK应答。SMTP发送者再发出RCPT命令确认邮件是否接收到。如果SMTP接收者接收,则返回OK应答;如果不能接收到,则发出拒绝接收应答(但不中止整个邮件操作),双方将如此重复多次。当接收者收到全部邮件后会接收到特别的序列,如果接收者成功处理了邮件,则返回OK应答。
SMTP提供传送邮件的机制,如果接收方与发送方连接在同一个传送服务下时,邮件可以直接由发送方主机传送到接收方主机;或者,当两者不在同一个传送服务下时,通过中继SMTP服务器传送。为了能够对SMTP服务器提供中继能力,它必须拥有最终目的主机地址和邮箱名称。
MAIL命令参数是回复路径,它指定邮件从何处来;而RCPT命令的参数是转发路径的,它指定邮件向何处去。向前路径是源路径,而回复路径是返回路径(它用于发生错误时返回邮件)。
当同一个消息要发往不同的接收者时,SMTP遇到了向不同接收者发送同一份数据的复制品的问题,邮件命令和应答有一个比较奇怪的语法,应答也有一个数字代码。在下面,例子中可以看到哪些使用实际的命令和应答。完整的命令和应答在第四节。
命令与应答对大小写不敏感,也就是说,命令和应答可以是大写,小写或两者的混合,但这一点对用户邮件名称却不一定是对的,因为有的主机对用户名大小写是敏感的。这样SMTP实现中就将用户邮箱名称保留成初始时的样子,主机名称对大小写不敏感。
命令与应答由ASCⅡ字母表组成,当传送服务提供8位字节传送通道,每7位字符正确传送,而最高位被填充为0。当指定一般的命令或应答格式后,参数会由一些类似于语言的字符串表示出来,如"<string>"或"<reverse-path>",这里尖括号表示这是一种类似于语言的变量。
编辑本段3 SMTP过程
本节提供了SMTP中的一些过程。头一个说明的是基本发送过程(定义为发送操作)。下来描述向前传送邮件,确认邮箱名称和扩展邮件列表,发送到终端和打开关闭交换。在本节的最后是对中断,邮件域的说明。本节的例子只是一部分命令和应答的序列,完整的例子见附录F。
31 MAIL
在SMTP发送操作中有三步,操作由MAIL命令开始给出发送者标识。一系列或更多的RCPT命令紧跟其后,给出了接收者信息,然后是DATA命令列出发送的邮件内容,最后邮件内容指示符确认操作。
过程中的第一步是MAIL命令,<reverse-path >;包括源邮箱。
MAIL <SP> FROM:<reverse-path><CRLF>
此命令告诉接收者新的发送操作已经开始,请复位所有状态表和缓冲区。它给出反向路径以进行错误信息返回。如果请求被接收,接收方返回一个250 OK应答。<reverse-path>;中不止包括了邮箱,它包括了主机和源邮箱的反向路由,其中的第一个主机就是发送此命令的主机。
过程中的第二步是发送RCPT命令。
RCPT <SP> TO:<forward-path> <CRLF>
此命令给出向前路径标识接收者,如果命令被接收,接收方返回一个
250 OK应答,并存储向前路径。如果接收者未知,接收方会返回一个550 Failure应答。此过程可能会重复若干次。
<forward-path>;不仅包括邮件,它是主机和目的邮箱的路由表,在其中的第一个主机就是接收命令的主机。过程中的第三步是发送DATA命令。
DATA <CRLF>
如果命令被接收,接收方返回一个354 Intermediate应答,并认定以下的各行都是信件内容。当信件结尾收到并存储后,接收者发送一个250 OK应答。因为邮件是在传送通道上发送,因此必须指明邮件内容结尾,以便应答对话可以重新开始。SMTP通过在最后一行仅发送一个句号来表示邮件内容的结束,在接收方,一个对用户透明的过程将此符号过滤掉,以不影响正常的数据。
注意:邮件内容包括如下提示:Date,Subject,To,Cc,From。
邮件内容指示符确认邮件操作并告知接收者可以存储和再发送数据了。如果此命令被接收,接收方返回一个250 OK应答。DATA命令仅在邮件操作未完成或源无效的情况下失败。
上面所述的过程是一个发送操作。这些命令只能以上面的顺序使用。下例表示了在一个发送操作中这些命令的使用。
SMTP过程例子 此例是在AlphaARPA主机的Smith发送邮件给BetaARPA主机的Jones,Green和Brown的,这里假定主机Alpha与主机Beta直接相连。
S: MAIL FROM:<Smith@AlphaARPA>
R: 250 OK
S: RCPT TO:<Jones@BetaARPA>
R: 250 OK
S: RCPT TO:<Green@BetaARPA>
R: 550 No such user here
S: RCPT TO:<Brown@BetaARPA>
R: 250 OK
S: DATA
R: 354 Start mail input; end with<CRLF><CRLF>
S: Blah blah blah
S: 等等
S: <CRLF><CRLF>
R: 250 OK
此信被前两个人接收,而第三个人在此主机上没有邮箱。
32 转发
下面是一些<forward-path>;中目的地址不正确的,但接收者知道正确的目的地址的例子。在这些例子中,下列应答之一(251,551)应该允许发送方与获得正确地址。
251:用户不在本地;将向前发送到<forward-path>;。
这个应答意味着,接收方SMTP知道用户的邮箱在另外的主机上,而且意味着将在未来使用正确的转向路径。请注意,主机或者用户,或者它们两者是不同的。接收方负责传送消息。
551 :用户非本地,请尝试<forward-path>
这个应答意味着接收SMTP知道用户的邮箱在另外的主机上,并意味着使用了正确的转发路径。注意请注意,主机或者用户,或者它们两者是不同的。接收方拒绝接收此用户的信件,发送者必须根据提供的信息重新发送或者向原发送者返回错误信息。下例显示了这些响应的应用。
转发的例子
S: RCPT TO:<Postel@USC-ISIARPA>
R: 251 User not local; will forward to<Postel@USC-ISIFARPA>
或者
S: RCPT TO:<Paul@USC-ISIBARPA>
R: 551 User not local; please try<Mockapetris@USC-ISIFARPA>
33 确认和扩展
SMTP提供了另外的确认用户名和扩展邮件列表的功能。这些功能由VREF和EXPN命令完成,它们都以字符串为参数。对于VREF命令,字符串参数指的是用户名,对此命令的响应要包括用户的命名和用户的邮箱。对于EXPN命令,字符串参数指的是邮件列表,对此命令的响应多于一个,它们要包括所有列表中用户的命名和他们的邮箱。
“用户名”是一个多余的项目,它是故意被加上的。如果主机采用VREF命令和EXPN命令,最后本地邮箱必须提供用户名使它被主机确认。如果主机选择由另外的字符串作为用户名,也是允许的。
在一些主机中,邮箱列表和一个邮箱的代名有一点不清楚,因为一般的数据结构可能包括两种类型的入口。如果要发出对邮件列表的确认,应该给出确定响应。在接收到这个消息后,主机将把邮件传送到列表上所有的地址上去,如果没有接收到确定响应,就会报告错误。例如,
"550 That is a mail list,not a user name"。如果请求用于扩展一个用户名,可能通过返回包括一个名字的列表来形成确定响应,如果没有接收到确定响应,就会报告错误。(例如,"550 That is a user name,not a mailing list")。
在多个响应的情况下(通常是对于EXPN而言的),每个应答指定一个邮箱。在模糊请求的情况下,例如"VRFY Smith",这里两个Smith的响应必须是"553 User ambiguous"。
确认用户名的情况如下例所示:例3:
确认用户名
S: VRFY Smith
R: 250 Fred Smith<Smith@USC-ISIFARPA>
或者
S: VRFY Smith
R: 251 User not local; will forward to<Smith@USC-ISIQARPA>
或者
S: VRFY Jones
R: 550 String does not match anything
或者
S: VRFY Jones
R: 551 User not local; please try<Jones@USC-ISIQ,ARPA>
或者
S: VRFY Gourzenkyinplatz
R: 553 User ambiguous
邮箱列表要求多个响应的情况如下例所示:
S: EXPN Example-People
R: 250-Jon Postel <Postel@USC-ISIFARPA>
R: 250-Fred Fonebone <Fonebone@USC-ISIQARPA>
R: 250-Sam Q Smith <SQSmith@USC-ISIQ,ARPA>
R: 250-Quincy Smith<@USC-ISIFARPA:Q-Smith@ISI-VAXAARPA>
R: 250-<joe@foo-unixARPA>
R: 250 <xyz@bar-unixARPA>
或者
S: EXPN Executive-Washroom-List
R: 550 Access Denied to You
VERF和EXPN命令的字符串命令参数因为具体实现的不同而不能再加以限制了。在一些系统上,EXPN命令的参数可能是一个包含邮件列表的文件名,但是在Internet上有许多不同的文件结构。
VRFY和EXPN命令在最小实现中并不包括,当它们实现时,它们也不要求被在传送间实现。
编辑本段34 发送信件和获得信件
SMTP的主要目的是将邮件发送到用户的邮箱中。由一些主机提供的类似的功能是把邮件送至用户的终端(如果用户正打开终端)。将邮件送到用户的邮箱中称为发送信件(mailing);而送至用户终端则称之为获得信件
(sending)。因为在一些主机上,这两者的实现十分类似,所以它们同时
被放入了SMTP中。然而,获得信件命令在SMTP的最小实现中是没有的。用户应该具有控制向终端上写信息的能力。大部分主机允许用户接受或者拒绝类似的信息。
下面三个命令被定义来支持获得信件。它们被用于邮件命令而不是MAIL
命令,指示接收SMTP这种操作的特殊意义:
SEND <SP> FROM:<reverse-path><CRLF>
SEND命令要求邮件内容直接传送到用户终端。如果用户未打开终端(或
者未接收终端信息),450响应将返回一个RCPT命令。如果信息被成功发送,此操作成功。
SOML <SP> FROM:<reverse-path><CRLF>;
Send或者MaiL命令要求将邮件内容直接发送到用户的终端上(如果用户在终端上)。如果用户不在终端上,邮件内容直接进入邮箱。如果邮件被发送到用户终端或者用户信箱,发送操作成功。
SAML <SP> FROM:<reverse-path><CRLF>
Send和MaiL命令要求邮件内容直接发送到用户终端上(如果用户在终端上)。不管怎么样,信件都会进入信箱。如果信件进入信箱,发送操作成功。
用于MAIL命令的响应和这些命令的响应相同。
编辑本段35 打开和关闭
当打开传送通道时,要交换一些信息以确定双方的身份。以下的命令是
用于打开和关闭的:
HELO <SP> <domain> <CRLF>
QUIT <CRLF>
在HELLO命令中,主机自己发送命令,此命令可以被解释为:“你好,
我是XX”。
打开联结的例子
R: 220 BBN-UNⅨARPA Simple Mail Transfer ServiceReady
S: HELO USC-ISIFARPA
R: 250 BBN-UNⅨARPA
关闭联结的例子
S: QUIT
R: 221 BBN-UNⅨARPA Service closing transmissionchannel
编辑本段36 转发
转发路径可能是如下格式:"@ONE,@TWO:JOE@THREE",在这里,ONE,TWO
和THREE是主机。这种格式用于强调地址和路径的区别。邮箱是绝对地址,路径是关于如何到达的信息。这两个概念不应该被混淆。
概念上,转发路径的元素被移动到回复路径作为从一个SMTP服务器到另一个SMTP服务器的信息。回复路径是一个反向数据源路径,例如从当前信息的位置到发起者的位置。当一个SMTP服务器从转发路径中删除自己的标记并将它插入到回复路径中时,它必须使用它发送环境能够理解的名称来进行,以防它的名称在不同的环境中被理解为不同的名字。
如果当SMTP接收到信息的转发路径的第一个元素不是此SMTP的标记时,此元素不从转发路径中删除,而被用来决定下一个应该发送到的SMTP服务器。在任何情况下,SMTP都将自己的标记加入反向路径中。
使用源路径时,接收SMTP接收转发的邮件并发送到另一接收SMTP服务器上。接收服务器可以接受或拒绝转发本地用户的邮件。接收SMTP通过将它自己的标记从转发路径移至回复路径的开始处来改变命令参数。这时,接收SMTP变成了发送SMTP,也就建立了到下一个转发路径中SMTP的通道,然后,它向这个SMTP发送邮件。
在回复路径上的头一个主机应是发送SMTP命令的主机,在转发路径上第一个主机应是接收SMTP命令的主机。
注意:转发路径和回复路径出现在SMTP命令和应答中,但不一定要出现在信
息中。也就是说,没有必须要这样的路径特别这种格式出现在信息头的"To:","From:"和"CC:"等域中。
如果SMTP服务器接受了转发任务,但后来它发现因为转发路径不正确或者其它原理无法发送邮件,它必须建立一"undeliverable mail"信号,将此信号送到此信的发主者那里。
此信号必须是从此主机的SMTP服务上发出的,当然了,此服务器不应该再报告出错信息的错误。一种阻止这种出错报告循环的情况是在信号的邮件命令的回复路径上置空。在传送此信息时,允许将回复路径也置为空。一个MAIL命令后的回复路径为空表现为如下形式:
MAIL FROM:<>
下例中显示了不可传送的邮件信息。此信息是对从HOSTW上的JOE发出的邮件经过在HOSTX需要经过HOSTZ到达HOSTY时出错的回应。我们看到的例子是在HOSTX和HOSTY之间发生的。
不可传送邮件信息的例子
S: MAIL FROM:<>
R: 250 ok
S: RCPT TO:<@HOSTXARPA:JOE@HOSTWARPA>
R: 250 ok
S: DATA
R: 354 send the mail data,end with
S: Date: 23 Oct 81 11:22:33
S: From: SMTP@HOSTYARPA
S: To: JOE@HOSTW,ARPA
S: Subject: Mail System Problem
S: Sorry JOE,your message to SAM@HOSTZARPA lost
S: HOSTZARPA said this:
S: "550 No Such User"
S:
R: 250 ok
编辑本段常见问题
⒈ SMTP是什么有什么作用答: SMTP是Simple Mail Transfer Protocol的缩写,即简单邮件传输协议,是一种提供有效可靠传送电子邮件的协议,用于在两台邮件服务器间交换邮件
⒉ 邮件服务器间邮件传输使用了TCP协议,为何邮件有时还会丢失
答: 邮件服务器之间的SMTP协议使用TCP连接,可以保证邮件准确无误地在邮件服务器之间传输 但由于邮件服务器本身的故障,例如邮件空间不足等,会导致邮件无法完成传输而导致丢失
⒊ 发件人用户代理为何不直接将邮件发送给收件人的用户代理,而是通过邮件服务器来传输
答: 因为用户电脑性能的限制,无法运行收发邮件的程序,并且无法不间断地运行并连接到互联网上 因此只能将信件暂时存放在邮件服务器中,用户需要时就可以去下载信件
mutt是一个Linux终端下的著名的邮件客户端,如你所愿,mutt就是一个邮件客户端。没有其他浮华的功能,它可以帮助你提升效率,至于帮助你装X只能算是mutt的特殊加成。
由于mutt是一个有着unix哲学的程序,可定制性很强,其高级功能可以由不同的程序来完成,比如以下搭配:
1mutt
使用mutt内建的imap,pop,smtp支持,最简单的方式,只需要安装mutt这一个软件包。
2mutt + msmtp
最简单的组合,配合imap协议,可以满足大多数人的要求
其中smtp功能由msmtp实现,你甚至可以把imap功能也由其他软件来实现
3mutt + msmtp + getmail + procmail
稍微复杂一点的组合,mutt是客户端,msmtp作为mta,getmail用来收取邮件,procmail过滤邮件。
mta还可以使用exim4或者postfix替代,一般使用msmtp就够了,因为postfix实在是太好了,邮件服务器通常会选择postfix。
msmtp可以使用esmtp替代。
邮件收取功能也可以使用fetchmail替代getmail,由于需要本地mta投递,所以同时需要procmail。
procmail是一个功能及其强大的邮件过滤系统。ps:看到这句话,你就应该明白,我显然没有使用它。。。
Mutt 跟其它 email 程序有什么重大区别吗?
Mutt 是一个发源于 Unix 的邮件程序,它跟一般的 Windows 邮件程序不同,它不是一个包罗万象的大杂烩。你甚至会发现它根本不直接发出邮件,它从来不自己编辑邮件,它从来不自己对邮件进行加密和数字签名
Mutt 更像一个文件管理器,只不过它管理的是email。它的功能是借助各个最强大的程序来实现的。这符合 UNIX 的设计思想。
当 Mutt 需要编辑邮件时,它有可能调用 vi, VIM, emacs, pico, 等编辑器。
当 Mutt 需要发信时,它把需要发出的信件放到 sendmail 的队列里,就什么都不管了。
当需要数字签名时,Mutt 会把信件交给 GnuPG 之类的程序处理一下,然后再发出去。
怎么收邮件呢?Mutt 不会自己到 POP 服务器去取邮件,你需要一个 fetchmail 程序,帮你把 email 从 POP 服务器取回来,转发到自己的 sendmail 的邮箱里。这样看起来就是你的主机成为了一个完整的 UNIX 网络工作站。
是不是觉得挺麻烦?其实有些 patch 可以使 Mutt 不依赖于这些程序,而自己处理收发工作。但是,强烈建议你使用这些外部程序!到时候你就知道这些东西的好处了。首先,VIM, sendmail, fetchmail 这些程序都是经过千锤百炼的质量信得过的程序,用它们编辑,发送,收取邮件你绝对放心。其次,你得到了一个 UNIX 网络工作站的功能:
sendmail 不但可以帮 Mutt 发出邮件,也可以帮其它 Unix 程序比如 tin 发送邮件。如果你需要一个邮件服务器帮你中转,那么你只需要设置一次就可以使所有的用户的所有这样的程序都自动可以发送邮件,不用每个程序都去设置帐号了。
fetchmail 收到邮件之后会转发给本地的 sendmail sendmail 如果允许 forward, 你就可以在自己的目录里编辑一个forward文件,信件可以自动被转发到其它地方或者经过一个过滤器过滤。你可以自己用perl等语言来写一个过滤器,它可以根据信件内容实现很多功能,比如自动回复等等。比如我就写了一个简单的过滤器,它可以记录所有发件人的地址,如果我把 helloooo 机器人连接到过滤器,恐怕你们就会收到可爱的 helloooo 的回信了 :)
Mutt作为Gmail客户端
由于Gmail服务器端垃圾邮件过滤已经做得很好了,而且我使用的是imap协议,所以不需要getmail去收取邮件,目前也没有必要自己再去配置procmail的过滤系统。
本文将对mutt + msmtp的配置进行说明。
1安装mutt和msmtp
一般发行版
mutt和msmtp已经包含在大多数发行版的软件源里,直接使用包管理器安装,其他发行版以此类推:
代码如下:
$ sudo apt-get insatll mutt msmtp #适用于debian系$ sudo yum insatll mutt msmtp #适用于red hat系
Gentoo Linux下安装
代码如下:
$ echo "mail-client/mutt -berkdb gpg imap mbox nntp sasl sidebar slang smime smtp" /etc/portage/packageuse # 设置mutt的use flag$ echo "mail-mta/msmtp sasl" /etc/portage/packageuse # 设置msmtp的use flag
$ emerge -av mutt msmtp # 安装mutt和msmtp
2配置mutt
创建并编辑~/muttrc
把username替换为你的Gmail用户名,passwd替换为密码
代码如下:
# 设置发信地址和用户名set from = "username@gmailcom"
set realname = "username"
set use_from = yes
代码如下:
# 设置Gmail帐户和密码set imap_user = "username@gmailcom"
set imap_pass = "your password"
代码如下:
# 设置远程服务器文件夹set folder = "imaps://imapgmailcom:993"
set spoolfile = "+INBOX"
mailboxes = +INBOX
set postponed = "+[Gmail]/Drafts"
代码如下:
# 允许mutt自动创建一个新的imap连接unset imap_passive
代码如下:
# imap连接保持时间set imap_keepalive = 300
代码如下:
# 检查新邮件间隔时间set mail_check = 120
代码如下:
# 本地缓存目录set header_cache = ~/mutt/cache/headers
set message_cachedir = ~/mutt/cache/bodies
代码如下:
# 设置TLS验证set certificate_file = /etc/ssl/certs/ca-certificatescrt
代码如下:
# 设置内建smtp,这里我们不使用#set smtp_url = "smtps://username@gmailcom@smtpgmailcom:465/"
#set smtp_pass = "your password"
#set ssl_starttls = yes
代码如下:
# 使用msmtpset sendmail = "/usr/bin/msmtp"
代码如下:
# 不保存发送的邮件unset record
代码如下:
# 回信不包含邮件头set header = no
代码如下:
# 退出提醒set quit = ask-yes
代码如下:
# 回信包含原文set include
代码如下:
# 设置回信引文之前的插入符号set indent_str = " "
代码如下:
# 设置邮件头my_hdr From: username@gmailcom
代码如下:
# 邮件打分score "~N" +4
score "~s 通知" +2
score "~D" -5
score "~O" +1
score "~s believe" -10
代码如下:
# 排序方式set sort = score
代码如下:
# 二级排序set sort_aux = date
代码如下:
# 翻到最后一页不回到第一页set pager_stop
代码如下:
# 快速回信set fast_reply
代码如下:
# 删除邮件自动移动光标set resolve = yes
代码如下:
# 设置编码,保持和终端一致set charset = "utf-8"
代码如下:
# 发信使用的字符集set send_charset = "us-ascii:iso-8859-1:gb18030:utf-8"
代码如下:
# 是否编辑邮件头set edit_headers = no
代码如下:
# pager显示行数set pager_index_lines = 4
代码如下:
# 告知mutt哪些是邮件列表subscribe ustc_lug@googlegroupscom
subscribe shlug@googlegroupscom
subscribe gentoo-user@listsgentooorg
代码如下:
# 使用solarized配色方案source ~/mutt/mutt-colors-solarized/mutt-colors-solarized-dark-256muttrc
编辑好后保存退出。
修改~/muttrc的权限
代码如下:
$ chmod 700 ~/muttrc创建本地文件夹
代码如下:
$ mkdir -p ~/mutt/cache3配置msmtp
创建或修改~/msmtprc
代码如下:
# Accounts will inherit settings from this sectiondefaults
auth on
tls on
tls_trust_file /usr/share/ca-certificates/mozilla/Thawte_Premium_Server_CAcrt
logfile ~/mutt/msmtplog
代码如下:
# Gmail accountaccount gmail
host smtpgmailcom
port 465
from username@gmailcom
user username@gmailcom
password password
tls_starttls off
tls_trust_file /etc/ssl/certs/ca-certificatescrt
代码如下:
# set default accountaccount default : gmail
保存退出,并设置权限
代码如下:
$ chmod 600 ~/msmtprc4配置mutt使用solarized配色方案
代码如下:
$ git clone https://githubcom/altercation/mutt-colors-solarizedgit ~/mutt/mutt-colors-solarized然后在~/muttrc中修改相应配置。
大功告成,终端启动:
代码如下:
$ mutt如无例外你将看到:
注意事项
Gmail启用了两步验证需要为mutt设置应用专用密码
0条评论