`

mailServer Apache James / sendmail / qmail

阅读更多

思科8.3亿美元完成对IronPort收购

2007年6月25日,思科公司宣布,已完成对私营公司IronPort Systems 的收购工作。IronPort Systems是全球领先的电子邮件和网络安全产品的提供商,其产品能够为从小公司到"财富1000强"企业等各种规模的机构提供信息保护,防止其遭受垃圾邮件、间谍软件、网络钓鱼及其他互联网安全威胁的攻击。

IronPort C360的构成

 

IronPort C360™邮件安全网关搭建于IronPort公司专有的AsyncOS™操作系统基础之上,能保护中等规模企业目前的需求和未来发展将会面临由于高性能邮件扫描的需求。IronPort® 无与伦比的性能可以提供高可用性,当企业由于大规模病毒爆发或者垃圾邮件攻击产生流量高峰时,还可以泰然自若,节约生产成本的同时提供生产力。

 

AsyncOS拥有许多高级邮件功能,包括强大的队列管理、邮件回退处理和连接管理等等,以确保即使是在最剧烈的病毒爆发或垃圾邮件攻击期间,企业的邮件系统不会出现任何过荷或者崩溃的情况,同时为企业节省宝贵的硬件投资、服务器空间、电力资源和IT管理时间等等

http://www.ironport.com/cn/pdf/ironport_c360_datasheet.pdf

AsyncOS操作系统从FreeBSD的内核继承而来,并在三方面做了增强。

第一, IronPort开发了一个无堆栈的线程模型

IronPort设备因此可以支持超过10000个并发连接,而传统的操作系统一般只能支持100个并发连接。

第二, 由于邮件的异步本质

IronPort开发了一个高性能的文件系统和一个由输入输出驱动的调度优化器,因此取名异步AsyncOS操作系统

第三, AsyncOS取消了传统的用户可访问的UNIX外壳的功能

这对于管理员来说简单了很多,而且大大增强了安全性。用户可以通过基于Web的用户界面或者全脚本化的命令行接口进行操作。

IronPort设备在使用的感觉上与其他网络设备(如路由器、交换机或防火墙等)类似,而这些网络设备中的大多数在使用经过修改的FreeBSD内核。

IronPort 大中国区总经理吴若松 IronPort C350 192.168.121.34

 

http://openwebmail.org/

 

http://www.iteye.com/topic/213246

Apache James 简称 James, 是 Java Apache Mail Enterprise Server的缩写。James 是100%基于Java的电子邮件服务器。它是一种独立的邮件服务器,并提供了一个完整的电子邮件解决方案,用来收、发电子邮件。

 

本文不赘述James服务器的参数细节,这个以后有机会再详细讨论,这里先从服务器搭建开始,用搭建的服务器收、发电子邮件来熟悉一下Apache James。本人也是新手,希望能得到各位高手的指点,使大家能悟到进阶的方向。

 

开始之前,先声明一下本文操作的系统环境:

1. JDK 6u10b

2. JMail API v1.4.2

3. JAF API v1.1(JavaBean Activation Framework)

4. Apache James 2.3.1

5. Eclipse 3.4 for J2EE Developers

6. Windows 2000 Server sp4

 

 

 

1。请下载安装JDK,并设置好其环境变量:JAVA_HOME=…… 、PATH=…… 、CLASSPATH=…… Eclipse 3.4 是目前的最新版本,可以从http://www.eclipse.org/ 下载。

 

2。请下载JMail API、JAF API,可以在www.java.sun.com 找到他们,找不到也不要紧,本文附件示例代码免费提供一份(^_^)。

 

3。Apache James 的官方网站为:http://james.apache.org/ ,当前 Server 的最新版为 2.3.1版. 安装非常简单,下载后得到james-binary-2.3.1.zip 文件,解压后即可。这里假设解压到D盘(D:\james-2.3.1),目录结构如下:

 

D:\james-2.3.1

|--- apps

|--- bin

|

…………

 

4。启动 James 服务器

双击或在命令行下执行D:\james-2.3.1\bin 目录下的 run.bat文件,即可启动 James 服务器。

 

启动后能在控制台看到如下信息,说明启动成功:

Java代码 复制代码
  1. Using PHOENIX_HOME: D:\james- 2.3 . 1
  2. Using PHOENIX_TMPDIR: D:\james-2.3 . 1 \temp
  3. Using JAVA_HOME: D:\Java\jdk1.6 .0_10
  4. Phoenix 4.2
  5. James Mail Server 2.3 . 1
  6. Remote Manager Service started plain:4555
  7. POP3 Service started plain:110
  8. SMTP Service started plain:25
  9. NNTP Service started plain:119
  10. FetchMail Disabled
Using PHOENIX_HOME: D:\james-2.3.1 
Using PHOENIX_TMPDIR: D:\james-2.3.1\temp 
Using JAVA_HOME: D:\Java\jdk1.6.0_10 

Phoenix 4.2 

James Mail Server 2.3.1 
Remote Manager Service started plain:4555 
POP3 Service started plain:110 
SMTP Service started plain:25 
NNTP Service started plain:119 
FetchMail Disabled

 

 

要关闭 James 服务,请使用 Ctrl + C

 

说明:启动前请确保您的JDK环境变量如JAVA_HOME等已经设置好;James 启动时,其SMTP 服务默认在 25 端口启动,POP3 服务默认在 110 端口启动, NNTP 服务默认在 119 端口启动, 请确保这些端口未被占用。比如本系统下就已经安装了Microsoft的 SMTP 服务,造成 James无法启动,解决方法为:开始--->设置--->控制面板--->管理工具--->服务,打开后找到“Simple Mail Transport Protocol(SMTP)”服务项,关闭即可。

 

 

5。配置服务

服务器启动后会在本机配置一个默认的服务,这可以用来在本机上本服务器范围内收发邮件,但是邮件发不到163等外网邮箱。我们这里关 注的重点就是配置一个能发到外网如163这样的邮箱的邮件,这样才有价值。不过由于本人是在本机上测试,一时不能获取公司的域名参数,无法测试接收外网邮 箱(如163)的邮件,见晾,不过做法都是一样的,至少我们可以向外网邮箱发送邮件,局域网内可以收、发邮件。

 

打开D:\james-2.3.1\apps\james\SAR-INF 下的 config.xml 文件,初次启动James之前,不会有这个文件,只有当James服务启动一次之后才自动构件该文件。

 

找到

Java代码 复制代码
  1. ……
  2. <postmaster>Postmaster@localhost </postmaster>
  3. ……
  4. <servernames autodetect="true" autodetectIP= "true" >
  5. <servername>localhost</servername>
  6. </servernames>
  7. ……
…… 
<postmaster>Postmaster@localhost</postmaster> 
…… 
<servernames autodetect="true" autodetectIP="true"> 
	<servername>localhost</servername> 
</servernames> 
…… 

 

 

把localhost该成你自己想要的邮箱域名, 把自动探测IP属性设置为“false”这里假设改成 zhaipuhong.com 如果开了一个帐号 zph ,那么他的邮件地址就是 zph@zhaipuhong.com (^_^)修改结果如下:

 

Xml代码 复制代码
  1. ……
  2. < postmaster > Postmaster@zhaipuhong.com </ postmaster >
  3. ……
  4. < servernames autodetect = "false" autodetectIP = "false" >
  5. < servername > zhaipuhong.com </ servername >
  6. </ servernames >
  7. ……
…… 
<postmaster>Postmaster@zhaipuhong.com</postmaster> 
…… 
<servernames autodetect="false" autodetectIP="false"> 
	<servername>zhaipuhong.com</servername> 
</servernames> 
……

 

找到

Xml代码 复制代码
  1. < mailet match = "RemoteAddrNotInNetwork=127.0.0.1" class = "ToProcessor" >
  2. < processor > relay-denied </ processor >
  3. < notice > 550 - Requested action not taken: relaying denied </ notice >
  4. </ mailet >
<mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor"> 
	<processor> relay-denied </processor> 
	<notice>550 - Requested action not taken: relaying denied</notice> 
</mailet>

 

将其注释,结果如下:

Xml代码 复制代码
  1. <!--mailet match = "RemoteAddrNotInNetwork=127.0.0.1" class = "ToProcessor" >
  2. < processor > relay-denied </ processor >
  3. < notice > 550 - Requested action not taken: relaying denied </ notice >
  4. </ mailet-- >
<!--mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor"> 
	<processor> relay-denied </processor> 
	<notice>550 - Requested action not taken: relaying denied</notice> 
</mailet-->

 

找到下面元素,去掉其注释

Xml代码 复制代码
  1. < authRequired > true </ authRequired >
<authRequired>true</authRequired>

 

 

这样邮箱访问需要帐号验证,你不希望别人用你的帐号收发消息吧……^_^

 

如此,James服务配置已经完成。

 

 

6。创建邮件帐号

创建邮件帐号后,就可以用来收发邮件了。James的账号管理是通过基于Telnet客户机的远程管理器,这点颇为不爽,尤其是我的操作系统下的命令行控制台是不显示telnet命令输入字符的,经常出错。

 

现在进入命令行控制台,在telnet localhsot 4555 进入James管理器,操作如下:

C代码 复制代码
  1. C:\Documents and Settings\db2admin>telnet localhost 4555
C:\Documents and Settings\db2admin>telnet localhost 4555 

 

 

将进入

C代码 复制代码
  1. JAMES Remote Administration Tool 2.3.1 Please enter your login and password Login id:
JAMES Remote Administration Tool 2.3.1 Please enter your login and password Login id:

 

 

默认的登陆id 为root 密码也为 root ,登陆成功后结果如下:

C代码 复制代码
  1. JAMES Remote Administration Tool 2.3.1
  2. Please enter your login and password
  3. Login id:
  4. Password:
  5. Welcome root. HELP for a list of commands
JAMES Remote Administration Tool 2.3.1 
Please enter your login and password 
Login id: 
Password: 
Welcome root. HELP for a list of commands  

 

创建新用户的命令是:adduser username password

这里创建了两个账户来作为演示使用: zhaipuhong/zhangpuhong ; zph/zph

 

说明:你可以输入help来获取命令帮助

C代码 复制代码
  1. help display this help 显示帮助信息
  2. listusers display existing accounts 显示现有账户
  3. countusers display the number of existing accounts 显示现有账户数量
  4. adduser [username] [password] add a new user 添加一个新用户
  5. verify [username] verify if specified user exist 核实指定用户是否存在
  6. deluser [username] delete existing user 删除存在的用户
  7. setpassword [username] [password] sets a user's password 设置用户密码
  8. setalias [user] [alias] locally forwards all email for 'user' to 'alias' 设置邮箱别名
  9. showalias [username] shows a user's current email alias 显示别名
  10. unsetalias [user] unsets an alias for 'user' 删除用户别名
  11. setforwarding [username] [emailaddress] forwards a user's email to another email address 转发用户的电子邮件地址到另一个电子邮件地址
  12. showforwarding [username] shows a user's current email forwarding 显示用户的当前邮件转发
  13. unsetforwarding [username] emoves a forward 删除转发
  14. user [repositoryname] change to another user repository 改变另一个用户库
  15. shutdown kills the current JVM (convenient when James is run as a daemon)关闭当前的服务
  16. quit close connection 关闭连接
help display this help 显示帮助信息 
listusers display existing accounts 显示现有账户 
countusers display the number of existing accounts 显示现有账户数量 
adduser [username] [password] add a new user 添加一个新用户 
verify [username] verify if specified user exist 核实指定用户是否存在 
deluser [username] delete existing user 删除存在的用户 
setpassword [username] [password] sets a user's password 设置用户密码 
setalias [user] [alias] locally forwards all email for 'user' to 'alias' 设置邮箱别名 
showalias [username] shows a user's current email alias 显示别名 
unsetalias [user] unsets an alias for 'user' 删除用户别名 
setforwarding [username] [emailaddress] forwards a user's email to another email address 转发用户的电子邮件地址到另一个电子邮件地址 
showforwarding [username] shows a user's current email forwarding 显示用户的当前邮件转发 
unsetforwarding [username] emoves a forward 删除转发 
user [repositoryname] change to another user repository 改变另一个用户库 
shutdown kills the current JVM (convenient when James is run as a daemon)关闭当前的服务 
quit close connection 关闭连接

 

 

 

 

 

账号创建成功后,使用quit退出管理器。现在我们可以开始部署我们的JMail应用了。

 

 

7。用James收发邮件

现在我们来写两个简单的程序来体验一下如何使用James收发邮件。请注意,示例程序是通用的。关于如何用JMail API收发邮件,这里不详细介绍,如果还没有接触过请参考一下我之前的文章:

http://zhaipuhong.iteye.com/admin/blogs/213005

 

关于接受邮件部分,我们在代码中通过注释来描述。另外我们来回忆一下上述步骤配置James服务器的参数:

1。smtp 服务器:192.168.1.98或者localhost 192.168.1.98是我的局域网IP,由于我James服务就装在我的机器上,所以我可以用localhost

2。两个邮件帐号:zhaipuhong/zhaipuhong 对应邮箱地址: zhaipuhong@zhaipuhong.com

zph/zph 对应邮箱地址: zph@zhaipuhong.com

注意:邮箱域名我们配置的是zhaipuhong.com

 

示例程序:

 

Java代码 复制代码
  1. package com.zhaipuhong.j2ee.jmail;
  2. import java.io.IOException;
  3. import java.util.Properties;
  4. import javax.mail.Authenticator;
  5. import javax.mail.Folder;
  6. import javax.mail.Message;
  7. import javax.mail.MessagingException;
  8. import javax.mail.PasswordAuthentication;
  9. import javax.mail.Session;
  10. import javax.mail.Store;
  11. import javax.mail.Transport;
  12. import javax.mail.internet.InternetAddress;
  13. import javax.mail.internet.MimeMessage;
  14. import javax.mail.internet.MimeUtility;
  15. public class HelloJMail {
  16. //发送邮件
  17. public static void sendMail() {
  18. //String host = "192.168.1.98"; // 指定的smtp服务器,本机的局域网IP
  19. String host = "localhost" ; // 本机smtp服务器
  20. //String host = "smtp.163.com"; // 163的smtp服务器
  21. String from = "zhaipuhong@zhaipuhong.com" ; // 邮件发送人的邮件地址
  22. String to = "zph@zhaipuhong.com" ; // 邮件接收人的邮件地址
  23. final String username = "zhaipuhong" ; //发件人的邮件帐户
  24. final String password = "zhaipuhong" ; //发件人的邮件密码
  25. // 创建Properties 对象
  26. Properties props = System.getProperties();
  27. // 添加smtp服务器属性
  28. props.put("mail.smtp.host" , host);
  29. props.put("mail.smtp.auth" , "true" );
  30. // 创建邮件会话
  31. Session session = Session.getDefaultInstance(props, new Authenticator(){
  32. @Override
  33. public PasswordAuthentication getPasswordAuthentication() {
  34. return new PasswordAuthentication(username, password);
  35. }
  36. });
  37. try {
  38. // 定义邮件信息
  39. MimeMessage message = new MimeMessage(session);
  40. message.setFrom(new InternetAddress(from));
  41. message.addRecipient(Message.RecipientType.TO, new InternetAddress(
  42. to));
  43. //message.setSubject(transferChinese("我有自己的邮件服务器了"));
  44. message.setSubject("I hava my own mail server" );
  45. message.setText("From now, you have your own mail server, congratulation!" );
  46. // 发送消息
  47. session.getTransport("smtp" ).send(message);
  48. //Transport.send(message); //也可以这样创建Transport对象发送
  49. System.out.println("SendMail Process Over!" );
  50. } catch (MessagingException e) {
  51. e.printStackTrace();
  52. }
  53. }
  54. //接受邮件
  55. public static void getMail(){
  56. String host = "localhost" ;
  57. final String username = "zph" ;
  58. final String password = "zph" ;
  59. // 创建Properties 对象
  60. Properties props = new Properties();
  61. // 创建邮件会话
  62. Session session = Session.getDefaultInstance(props, new Authenticator(){
  63. @Override
  64. public PasswordAuthentication getPasswordAuthentication() {
  65. return new PasswordAuthentication(username, password);
  66. }
  67. });
  68. try {
  69. // 获取邮箱的pop3存储
  70. Store store = session.getStore("pop3" );
  71. store.connect(host, username, password);
  72. // 获取inbox文件
  73. Folder folder = store.getFolder("INBOX" );
  74. folder.open(Folder.READ_ONLY); //打开,打开后才能读取邮件信息
  75. // 获取邮件消息
  76. Message message[] = folder.getMessages();
  77. for ( int i= 0 , n=message.length; i<n; i++) {
  78. System.out.println(i + ": " + message[i].getFrom()[ 0 ]
  79. + "\t" + message[i].getSubject());
  80. try {
  81. message[i].writeTo(System.out);
  82. } catch (IOException e) {
  83. e.printStackTrace();
  84. }
  85. }
  86. // 关闭资源
  87. folder.close(false );
  88. store.close();
  89. } catch (MessagingException e) {
  90. e.printStackTrace();
  91. }
  92. System.out.println("GetMail Process Over!" );
  93. }
  94. //邮件主题中文字符转换
  95. public static String transferChinese(String strText){
  96. try {
  97. strText = MimeUtility.encodeText(new String(strText.getBytes(), "GB2312" ), "GB2312" , "B" );
  98. }catch (Exception ex){
  99. ex.printStackTrace();
  100. }
  101. return strText;
  102. }
  103. public static void main(String[] args) {
  104. HelloJMail.sendMail();
  105. //HelloJMail.getMail();
  106. }
  107. }
package com.zhaipuhong.j2ee.jmail;

import java.io.IOException;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;

public class HelloJMail {
	
	//发送邮件
	public static void sendMail() {
		//String host = "192.168.1.98"; // 指定的smtp服务器,本机的局域网IP
		String host = "localhost"; // 本机smtp服务器
		//String host = "smtp.163.com"; // 163的smtp服务器
		String from = "zhaipuhong@zhaipuhong.com"; // 邮件发送人的邮件地址
		String to = "zph@zhaipuhong.com"; // 邮件接收人的邮件地址
		final String username = "zhaipuhong";  //发件人的邮件帐户
		final String password = "zhaipuhong";   //发件人的邮件密码

		// 创建Properties 对象
		Properties props = System.getProperties();

		// 添加smtp服务器属性
		props.put("mail.smtp.host", host);
		props.put("mail.smtp.auth", "true");

		// 创建邮件会话
		Session session = Session.getDefaultInstance(props, new Authenticator(){
			@Override
			public PasswordAuthentication getPasswordAuthentication() {
				return new PasswordAuthentication(username, password);
			}
			
		});

		try {
			// 定义邮件信息
			MimeMessage message = new MimeMessage(session);
			message.setFrom(new InternetAddress(from));
			message.addRecipient(Message.RecipientType.TO, new InternetAddress(
					to));
			//message.setSubject(transferChinese("我有自己的邮件服务器了"));
			message.setSubject("I hava my own mail server");
			message.setText("From now, you have your own mail server, congratulation!");

			// 发送消息
			session.getTransport("smtp").send(message);  
			//Transport.send(message); //也可以这样创建Transport对象发送
			System.out.println("SendMail Process Over!");

		} catch (MessagingException e) {
			e.printStackTrace();
		}
	}
	
	//接受邮件
	public static void getMail(){
		String host = "localhost";
	    final String username = "zph";
		final String password = "zph";

		// 创建Properties 对象
	    Properties props = new Properties();

		// 创建邮件会话
		Session session = Session.getDefaultInstance(props, new Authenticator(){
			@Override
			public PasswordAuthentication getPasswordAuthentication() {
				return new PasswordAuthentication(username, password);
			}
			
		});

	    
		try {
			// 获取邮箱的pop3存储
			Store store = session.getStore("pop3");
			store.connect(host, username, password);

	        // 获取inbox文件
		    Folder folder = store.getFolder("INBOX");
		    folder.open(Folder.READ_ONLY);  //打开,打开后才能读取邮件信息

		    // 获取邮件消息
		    Message message[] = folder.getMessages();

		    for (int i=0, n=message.length; i<n; i++) {
		    	System.out.println(i + ": " + message[i].getFrom()[0]
		    	                               + "\t" + message[i].getSubject());
		    	try {
					message[i].writeTo(System.out);
				} catch (IOException e) {
					e.printStackTrace();
				}

		    }

		    // 关闭资源
		    folder.close(false);
		    store.close();
		    
		} catch (MessagingException e) {
			e.printStackTrace();
		}
		
		System.out.println("GetMail Process Over!");

	}
	
	//邮件主题中文字符转换
	public static String transferChinese(String strText){
		try{
			strText = MimeUtility.encodeText(new String(strText.getBytes(), "GB2312"), "GB2312", "B");
		}catch(Exception ex){
			ex.printStackTrace();
		}
		return strText;
	}

	public static void main(String[] args) {
		HelloJMail.sendMail();
		//HelloJMail.getMail();
	}

}

 

 

 

 

说明: 执行测试时,先执行发送,在main方法中注释掉邮件接受方法调用,等待片刻,再注释掉邮件发送方法调用,执行邮件接受方法调用。因为就算163这样优秀的企业级邮箱也不可能瞬间就能收到发送的邮件。

在邮件发送方法中:sendMail(), 可以尝试一下又本邮件服务器向163邮箱发送邮件,如果想通过163邮件服务器想本地发送邮件,你需要配置DSN。

 

以下为本机接收James邮件服务器提供服务的邮件结果:

 

C代码 复制代码
  1. 0: zhaipuhong@zhaipuhong.com I hava my own mail server
  2. Return-Path: <zhaipuhong@zhaipuhong.com>
  3. Delivered-To: zph@zhaipuhong.com
  4. Received: from 127.0.0.1 ([127.0.0.1])
  5. by ZPH (JAMES SMTP Server 2.3.1) with SMTP ID 693
  6. for <zph@zhaipuhong.com>;
  7. Wed, 9 Jul 2008 19:58:38 +0800 (CST)
  8. Date: Wed, 9 Jul 2008 19:58:38 +0800 (CST)
  9. From: zhaipuhong@zhaipuhong.com
  10. To: zph@zhaipuhong.com
  11. Message-ID: <11627000.01215604718796.JavaMail.db2admin@ZPH>
  12. Subject: I hava my own mail server
  13. MIME-Version: 1.0
  14. Content-Type: text/plain; charset=us-ascii
  15. Content-Transfer-Encoding: 7bit
  16. From now, you have your own mail server, congratulation!
0: zhaipuhong@zhaipuhong.com	I hava my own mail server
Return-Path: <zhaipuhong@zhaipuhong.com>
Delivered-To: zph@zhaipuhong.com
Received: from 127.0.0.1 ([127.0.0.1])
          by ZPH (JAMES SMTP Server 2.3.1) with SMTP ID 693
          for <zph@zhaipuhong.com>;
          Wed, 9 Jul 2008 19:58:38 +0800 (CST)
Date: Wed, 9 Jul 2008 19:58:38 +0800 (CST)
From: zhaipuhong@zhaipuhong.com
To: zph@zhaipuhong.com
Message-ID: <11627000.01215604718796.JavaMail.db2admin@ZPH>
Subject: I hava my own mail server
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

From now, you have your own mail server, congratulation!

 

 

 

从上面的结果可以看出,该邮件是由zhaipuhong@zhaipuhong.com 发给 zph@zhaipuhong.com 的。

 

多发几封电子邮件,就会发现,James 的邮件接收是一个栈结构,最近收到的邮件编号为0,依次类推……

 

 

 

  • practice.rar (370.3 KB)
  • 描述: 项目的示例代码
  • 下载次数: 215
  • config.rar (14.7 KB)
  • 描述: James 的配置文件,可以直接替换使用
  • 下载次数: 131

Sendmail邮件服务器搭建与配置笔记
http://myhat.blog.51cto.com/391263/410414

 

使用命令行收发邮件

http://meiyoudao.iteye.com/blog/817995

 

一.登录SMTP的sohu服务器(发送邮件) 
C:\Documents and Settings\meiyoudao>telnet smtp.sohu.com 25 
220 95.62 ESMTP ready 


2.连接上之后.和服务器打个招呼(输入内容:ehlo meiyoudao) 

ehlo meiyoudao 

250-95.62 
250-AUTH PLAIN LOGIN 
250 STARTTLS 

3.之后告诉服务器,你要登录邮箱(输入内容:auth login) 

auth login 

334 VXNlcm5hbWU6 
4.输入经过base64encoder 处理的用户名(输入用户名内容:bWVpeW91ZGFv) 
bWVpeW91ZGFv 

5.输入经过base64encoder 处理的密码(输入用户密码内容:不告诉你) 
MTExMTExMTE= 
235 2.0.0 OK 

Java代码 
  1. //代码片段  
  2. sun.misc.BASE64Encoder encorde = new sun.misc.BASE64Encoder();    
  3. System.out.println(encorde.encode("meiyoudao".getBytes()));  



mail from:<meiyoudao@sohu.com> 
250 2.1.0 Ok 

rcpt to:<meiyoudao@sina.com> 
250 2.1.5 Ok 

data 
354 End data with <CR><LF>.<CR><LF> 

from:<xxx@sohu.com> 
subject:haha 

test!!! 
.
  (这里有个一点) 
250 2.0.0 Ok: queued as 4F8F5458C9B 



二.登录到POP3接受邮件 
C:\Documents and Settings\meiyoudao>telnet pop3.sohu.com 110 

+OK POP3 ready 

2.输入用户名(不需要base64encoder 转码) 

user meiyoudao 
+OK 
3.输入密码(隐藏不告诉你们) 
pass ********** 
+OK Authentication succeeded 

3.获取邮件箱信息(3135 表示当前邮箱有多少封邮件,包括收件箱,发件箱等等,589337470总大小KB) 
stat 
+OK 3135 589337470 

4.返回所有邮件使用的空间大小 

list 
... 省略掉 
2852 388195 
2853 2777 
2854 15176 
2855 25915 
2856 891616 
2857 5451 
2858 59639 
2859 94820 
2860 19962 
... 省略掉 

5.查看特定的某封大小 
list 3131 
+OK 3131 41368 

6.返回某封邮件的内容 
retr 3 

...省略 

7.把某封邮件放入垃圾箱 
dele 3 
+OK message 1 deleteed. 

8.从垃圾箱中恢复邮件 
rset 
+OK 1 messages <3087 octets>.

 

 

LINUX 下停止 sendmail 服务

http://cnaning.iteye.com/blog/846089

 

每次LINUX启动到sendmail时候就不动了,等了好久才进入系统,很不爽,就把sendmail进程停了,HOHO 

  1.执行命令service sendmail stop 

  2.执行命令:chkconfig --list sendmail 

  sendmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off 

  表明sendmail在level在2.3.4.5时是自动开启的。而一般系统设置为中间level(3),因此每次机器重启,sendmail会自动重启。 

  chkconfig --level 2345 sendmail off 

  这样以来,sendmail在2、3、4、5级别也关闭了。这样,机器重启之后,sendmail也不会重启了执行命令 

  或者直接的方法: 
  执行命令#ntsysv取消sendmail选项就行。

 

 

使用linux shell+sendmail+139邮箱实现定时短信报警

http://jackyrong.iteye.com/blog/847498

最近想做个linux的系统监控,比如当磁盘空间到达一定时,进行短信报警,但又 
暂时不想买设备,又不是SP,之前用过飞信API,但发现飞信老改API,麻烦,后来发现 
139邮箱只要注册了,就可以实现只要往139邮箱发的,都可以实现短信提醒的功能! 
下面简单小结下。 

1 先写个监视磁盘空间的脚本,下面只是示例而已 
  #! /bin/bash 
shopt -s -o nounset 

partitions="/home /tmp" 

From='root@localhost.localdomain' 

To='你的手机号码@139.com' 
Subject='分区使用通知' 
Msgbody= 

//设置为5%就报警了,这里设置小点,看到效果 
declare -i AlertPcent=5 

declare -i TOTAL TOTALavl 

get_usedTotalPcent() { 
    local tmp pcent 
    declare -i pcent 
tmp=$(df -B 1024K | grep ${p}$ | awk '{print $5}') 
    pcent=${tmp%\%*} 
    return $pcent 



# 秎盚硄 
mailto() { 
   echo "$Msgbody" | mail  -s "$Subject" $To 



p= 
pcent= 
if [ -n "$partitions" ]; then 
   for p in $partitions 
   do 
      get_usedTotalPcent $p 
      pcent=$? 

      # 琌笷牡ボκだゑ 
      if [ $pcent -ge $AlertPcent ]; then 
               get_usedTotalPcent $p 
         Msgbody=$Msgbody"分区$p目前使用量 $TOTAL MB,已达 $pcent%,剩余空间 $TOTALavl MB." 
      fi 
   done 
   if [ -n "$Msgbody" ]; then 
      Msgbody="hello "$Msgbody 
      mailto 
   fi 
fi 


2 如果你喜欢配置sendmail,可以配置,但我新手,甚至连sendmail也不配置了,直接 
用root@localhost.domain去发了,下文会继续讲解。 

3 把脚本放到定时计划任务里 

4 在你的139邮箱(mail.139.com,任何手机都可以申请)中,设置好手机里的邮件到达通知,并记得设置好白名单,比如我这里设置为root@localhost.domain了,这样才不会当垃圾邮件,还要设置后每天多少点是允许收到邮件达到短信提醒的,设置好后, 
那就一起OK了 

5 我试过,在家里的ADSL,用虚拟机,基本都没啥延迟了 

 

通用快速检测邮件故障思路方法

http://camel2099.iteye.com/blog/975848

 

故障设置案例: 
突然发现:自己的公司的邮件:mymail@me.com 不能发邮件给 abc@9gcai.com 了? 
老板问你:为什么? 

常见可能故障: 
1.对方邮箱爆满,附件超过对方邮箱允许容量。 
2.对方DNS故障。 
3.对方邮件服务器故障。 
4.对方拒绝收取你的邮件。 
5.其他方面故障,为省篇幅这里不做讨论。 

 

end
分享到:
评论
1 楼 shaker_86 2009-02-17  
请问有没有编程式的添加帐号的方法?

相关推荐

    perl-Mail-Sendmail

    在perl中使用本机的sendmail发送邮件的代码如下: #!/usr/bin/perl ...open(MAIL, '|/usr/lib/sendmail -t'); select(MAIL); print; To: $r_mail From: $s_mail Subject: $subject 邮件内容,database is ok!

    FreeBSD-MailServer-Sendmail.pdf

    FreeBSD-MailServer-Sendmail.pdf

    PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法

    2、从http://glob.com.au/sendmail/ 下载sendmail组件 3、解压sendmail.zip到目录下,我安装的路径是: F:\root\sendMail 4、配置php.ini,主要配置以下3项 5、修改 sendmail.ini,文件路径:F:\root\sendMail\...

    php多种形式发送邮件(mail qmail邮件系统 phpmailer类)

    复制代码 代码如下:/* 使用qmail发送邮件函数 */ function send_check_mail($email, $subject,$uid,$buffer) { $command = “/var/qmail/bin/qmail-inject “.$email; //qmail程式地址,$email是要发送的地址 $...

    sendmail - SRC - C - 2013/04

    Open source sendmail in C. Home: ftp://ftp.sendmail.org/pub/sendmail

    PHPsendMail

    php发邮件不需邮件服务器,配置好,即可发送

    在Linux系统下面架设Sendmail服务器

    本文介绍了Linux系统中的...首先安装Sendmail所需软件,修改/etc/mail/local-hosts-name文件。增加本地域和主机的FQDN,记住只是本地主机的FQDN和域名FQDN,不要添加其他域的然后更改/etc/mail/sendmail.mc文件。

    sendmail说明文档1

    sendmail简介:集群路径:天津:/ifs/TJPROJ3/Plant/chenjun/mytools/sendmail.py南京/NJPROJ2/Plan

    linux_sendmail配置详解

    ),相当于一个邮局,server端的软件,主要的功能有,接收MUA发来的邮件和把邮件发送给下一个MTA,可以说是一个邮件路由(mail router),server端的软件就属于MTA,现在开源的有sendmail,postfix,qmail等 ...

    Qmail邮件系统的安全分析和改进研究

    Qmail是全球安装使用量仅次于Linux/Unix上缺省安装的的Sendmail的邮件服务器软件,到目前为止Qmail的MTA依然是世界上转发速度最快的邮件传输代理[1],Qmail几乎兼容所有的Linux/Unix类操作系统。由于在Linux/Unix...

    Linux下高可用/可伸缩Sendmail研究

    运行Sendmail的服务器群集能够在有竞争力的价格上提供高性能和高可用性。对于经验丰富的系统管理员,这一贯是常用的做法。本文描述了我们的研究,量化和描述实现高可用/可伸缩Sendmail 的方法。

    PHP仿土巴兔装修报价器源码.zip

    PHP仿土巴兔装修报价器源码,适用于家装装报价,亲测可以用

    linux sendmail配置

    &lt;2&gt;qmail &lt;3&gt;webmail 3.使用的协议 smtp:(simple message transport protocol)简单消息传输协议 pop3:(post office protocol3)邮局协议3 4.术语 MTA: Mail Transport Agent 邮件传输代理,即指邮件服务器; MUA: ...

    iis下php mail函数的sendmail配置方法(官方推荐)

    首先你需要先到从http://glob.com.au/sendmail/下载sendmail.zip文件,点此可以直接下载噢,然后把它解压到如D:\php\sendmail\目录下。 然后打开php.ini文件,找到下面这段代码 复制代码 代码如下: [mail function] ...

    sendmail_Sendmail_

    sendmail for windows emulate linux sendmail

    linux sendmail 配置

    linux sendmail

    nagios监控插件开发步骤

    1、编写shell 2、将编写好的shell放在服务器与客户端/usr/local/nagios/libexec路径下 ...command[check_update]=/usr/local/nagios/libexec/check_update /mail/logs/sendmail -w 1 -c 2 5、客户端、主机服务重启

    linux下python使用sendmail发送邮件

    参考链接:How do I send mail from a Python script? 使用linux下的sendmail程序来发送邮件,利用popen函数(python docs关于popen函数)可以直接调用linux系统程序,需要指定程序所在的位置。 python代码: #!/...

    CentOS-6.5-Sendmail邮件服务器配置实例.doc

    CentOS 6.5 Sendmail邮件服务器配置实例 【例题】 在服务器上配置sendmail服务器。发送服务器是smtp.test.com,接收邮件服务器为pop 3.test.com。创建两个邮件账户mail1和mail2,密码均为admin12345。配置完毕后在ou...

Global site tag (gtag.js) - Google Analytics