- 浏览: 1987556 次
- 性别:
- 来自: 南京
-
文章分类
最新评论
-
cht的大摩托:
学习
IBM WebSphere Performance Tool / ISA / jca457.jar / ha456.jar / ga439.jar -
leeking888:
有没有linux 64位的相关librfccm.so等包啊?
web test LoadRunner SAP / java / Java Vuser / web_set_max_html_param_len -
paladin1988:
非常不错,多谢了。。
appServer IBM WebSphere / WAS 7 / 8.5 / was commerce -
hzxlb910:
写了这么多
net TCP/IP / TIME_WAIT / tcpip / iperf / cain -
acwyg:
ed2k://|file|LoadRunner.V8.1.is ...
web test performance tools / linux performance tools / windows performance tools
思科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
第一, 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 服务器。
启动后能在控制台看到如下信息,说明启动成功:
- 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
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服务启动一次之后才自动构件该文件。
找到
- ……
- <postmaster>Postmaster@localhost </postmaster>
- ……
- <servernames autodetect="true" autodetectIP= "true" >
- <servername>localhost</servername>
- </servernames>
- ……
…… <postmaster>Postmaster@localhost</postmaster> …… <servernames autodetect="true" autodetectIP="true"> <servername>localhost</servername> </servernames> ……
把localhost该成你自己想要的邮箱域名, 把自动探测IP属性设置为“false”这里假设改成 zhaipuhong.com 如果开了一个帐号 zph ,那么他的邮件地址就是 zph@zhaipuhong.com (^_^)修改结果如下:
- ……
- < postmaster > Postmaster@zhaipuhong.com </ postmaster >
- ……
- < servernames autodetect = "false" autodetectIP = "false" >
- < servername > zhaipuhong.com </ servername >
- </ servernames >
- ……
…… <postmaster>Postmaster@zhaipuhong.com</postmaster> …… <servernames autodetect="false" autodetectIP="false"> <servername>zhaipuhong.com</servername> </servernames> ……
找到
- < mailet match = "RemoteAddrNotInNetwork=127.0.0.1" class = "ToProcessor" >
- < processor > relay-denied </ processor >
- < notice > 550 - Requested action not taken: relaying denied </ notice >
- </ mailet >
<mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor"> <processor> relay-denied </processor> <notice>550 - Requested action not taken: relaying denied</notice> </mailet>
将其注释,结果如下:
- <!--mailet match = "RemoteAddrNotInNetwork=127.0.0.1" class = "ToProcessor" >
- < processor > relay-denied </ processor >
- < notice > 550 - Requested action not taken: relaying denied </ notice >
- </ mailet-- >
<!--mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor"> <processor> relay-denied </processor> <notice>550 - Requested action not taken: relaying denied</notice> </mailet-->
找到下面元素,去掉其注释
<authRequired>true</authRequired>
这样邮箱访问需要帐号验证,你不希望别人用你的帐号收发消息吧……^_^
如此,James服务配置已经完成。
6。创建邮件帐号
创建邮件帐号后,就可以用来收发邮件了。James的账号管理是通过基于Telnet客户机的远程管理器,这点颇为不爽,尤其是我的操作系统下的命令行控制台是不显示telnet命令输入字符的,经常出错。
现在进入命令行控制台,在telnet localhsot 4555 进入James管理器,操作如下:
C:\Documents and Settings\db2admin>telnet localhost 4555
将进入
JAMES Remote Administration Tool 2.3.1 Please enter your login and password Login id:
默认的登陆id 为root 密码也为 root ,登陆成功后结果如下:
- JAMES Remote Administration Tool 2.3.1
- Please enter your login and password
- Login id:
- Password:
- 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来获取命令帮助
- 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 关闭连接
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
示例程序:
- 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();
- }
- }
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邮件服务器提供服务的邮件结果:
- 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!
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
使用命令行收发邮件
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
- //代码片段
- sun.misc.BASE64Encoder encorde = new sun.misc.BASE64Encoder();
- 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.其他方面故障,为省篇幅这里不做讨论。
- IronPort_C350.rar (837.1 KB)
- 下载次数: 39
发表评论
-
appServer WAS / WebSphere / javacore.txt 、heapdump.phd、core.dmp、Snap.trc
2016-08-24 16:45 3003s WAS生成的文件:javacore.***.t ... -
webserver waf / WAF 2.0 / ASERVER/1.2.9
2013-11-29 11:48 1887http://lindows.iteye.com/a ... -
WebServer Roxen
2012-04-17 10:39 1250... -
monitorServer nagios / cacti / tivoli / zabbix / SaltStack
2011-08-03 17:34 1532SaltStack 自动化配置管理工具 Zabbi ... -
webServer kzserver/1.0.0
2011-06-18 14:14 1447http://nanjing.3477.com/xinxi/v ... -
webServer fscs 0.1.1
2010-12-17 06:50 2420504 Gateway Time-out FSCS/0.1.1 ... -
searchServer IBM OminiFind / WebSphere Commerce SOLR
2010-09-25 10:34 1927百度搜索研发部 http: ... -
monitorServer ITCAM Agent for DB2 error_list
2010-08-04 16:42 3020红皮书 Tivoli / TIVOLI http:/ ... -
IBM WebSphere Portal / RAD 7.5
2010-04-08 08:05 2323WebSphere Portal v6.1 Programmi ... -
IBM WebSphere MQ / Omegamon XE for Messaging / ActiveMQ 5.9 / Apache Artemis
2010-04-08 08:01 3986s http://wiki.cns*****.com/p ... -
monitorServer IBM Tivoli Enterprise Monitor Server
2010-02-26 11:18 7123s Microsoft 的 SMS / MOM F ... -
blancerServer IBM WebSphere Edge Server 6.1
2009-12-22 23:35 3437file:///D:/soft/C59I0ML/setu ... -
mediaServer Helix
2009-09-02 22:01 1698http://bbs2.chinaunix.net/viewt ... -
webServer jetty
2009-09-02 21:12 3091http://www.jforum.net/confluenc ... -
cgiServer_Xitami
2009-08-15 12:28 1430Xitami:多平台,多线程的开放源码Web服务器。 h ... -
cloudServer Amazon EC2 / AWS / SWS / yunjisuan / yunfuwu / yuncunchu
2009-07-01 17:44 2210http://aws.amazon.com/ec2/ ... -
esbServer tibco / IBM WebSphere ESB / SOA
2009-06-08 23:45 2431http://www.open-open.com/66.ht ... -
appServer Geronimo
2009-05-15 01:29 1558应用服务器 共收录了 46 个项目 —— 第 1 页 htt ... -
webServer LiteSpeed
2009-03-12 12:02 2952http://rforum.andreas-s.net/ ... -
webServer qhttp
2009-03-12 11:28 2947502 Bad Gateway qhttpd Server T ...
相关推荐
# 基于C语言的SmartPlugModbus固件项目 ## 项目简介 该项目是一个基于C语言的固件项目,旨在实现一个支持Modbus RTU通信协议的智能设备固件。该固件被设计为与SmartPlugModbus设备配合使用,用于控制和管理多个电源插座,提供过流、欠流、过压、欠压和过热保护,同时监控插座状态和电压、电流等参数。 ## 项目的主要特性和功能 1. Modbus RTU通信协议支持固件实现了Modbus RTU通信协议,允许通过Modbus协议与设备进行通信,包括读取和写入设备参数、状态和控制命令。 2. 多插座控制固件支持控制多个电源插座,包括开启、关闭、查询状态等。 3. 保护功能设备提供过流、欠流、过压、欠压和过热保护,防止设备损坏和安全事故。 4. 参数配置通过Modbus协议,用户可以配置设备的保护参数,如电流、电压限制等。
【项目资源】: 单片机项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。
【项目资源】: 物联网项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。
# 基于嵌入式系统的StackAttack游戏项目 ## 项目简介 StackAttack是一个基于嵌入式系统的游戏项目,设计用于SPI TFT彩色液晶显示面板上运行。游戏的核心玩法是操控一个名为“Claw”(爪子)的游戏角色,在由格子组成的地图上移动并抓取箱子。玩家通过操纵杆控制游戏角色,成功抓取并移动箱子到目标位置后得分。游戏地图由二维数组表示,每个格子代表一个位置。当玩家成功将所有箱子移动到目标行时,游戏结束。 ## 项目的主要特性和功能 1. 游戏角色控制玩家通过操纵杆控制Claw(爪子)角色移动。 2. 地图和箱子管理游戏地图由二维数组表示,每个格子代表一个位置。箱子在游戏地图上的位置由数组中的值表示。 3. 游戏逻辑包括角色的移动、箱子的抓取和移动、得分计算等。 4. 图形显示使用SPITFTILI9341图形库控制SPI TFT显示屏,实现游戏的图形输出。 5. 暂停功能游戏支持暂停功能,方便玩家随时暂停游戏。
内容概要:本文档提供了基于STM32、OpenCV和卷积神经网络的车牌识别系统的完整代码示例。系统通过摄像头捕捉视频流,利用OpenCV进行图像处理(如灰度化、二值化、轮廓检测等)以定位车牌区域,并使用预训练的ONNX模型对车牌字符进行识别。之后,系统将识别到的车牌号与预先存储在CSV文件中的居民车牌数据库进行匹配,以判断车辆是否为小区居民所有,从而实现对外来车辆的收费管理。; 适合人群:对嵌入式系统开发、计算机视觉和深度学习感兴趣的开发者,尤其是有一定C++编程基础和技术背景的研究人员或工程师。; 使用场景及目标:①适用于社区、停车场等场所的车辆管理;②帮助开发者理解车牌识别的基本流程,包括图像预处理、车牌定位、字符识别以及与数据库的交互;③提供一个可扩展的基础框架,便于后续优化和功能增加。; 阅读建议:读者应确保具备基本的OpenCV库使用经验和C++编程能力。在学习过程中,建议同时参考相关文献资料,深入理解每个步骤背后的原理,并尝试调整参数或替换模型以提高识别精度。此外,还需准备相应的硬件设备(如摄像头)和软件环境(如安装OpenCV库),以便实际运行代码并观察效果。
efwfw
内容概要:本文详细介绍了利用西门子S7-200 PLC和MCGS组态软件构建智能交通灯控制系统的方法。首先阐述了系统的硬件配置,包括PLC的选择、IO分配、光电开关的应用等。接着深入探讨了梯形图编程的核心逻辑,如定时器嵌套、车流判断、紧急模式处理等。同时,还讲解了MCGS组态界面的设计要点,如动态指示灯、车流统计曲线、急停按钮等功能的实现。此外,文中分享了一些调试经验和优化技巧,如信号隔离、通信参数设置、夜间模式优化等。 适合人群:对PLC编程和工业自动化感兴趣的工程技术人员、高校相关专业学生。 使用场景及目标:适用于城市交通管理部门进行智能交通灯系统的规划与实施,旨在提高交通效率,减少拥堵。通过学习本文,读者能够掌握PLC编程的基本方法和MCGS组态软件的使用技巧。 其他说明:文中提供了详细的接线图、梯形图代码片段和组态界面截图,便于读者理解和实践。同时,作者还分享了许多实际操作中的注意事项和经验教训,有助于初学者少走弯路。
【项目资源】: 物联网项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。
摘 要 面对信息时代的机遇与挑战,利用高科技手段来提高企业的管理水平无疑是一条行之有效的途径。利用计算机管理可以最大限度的发挥准确、快捷、高效等作用, 在越来越激烈的珠宝行业中,计算机管理技术对珠宝首饰公司的服务管理提供强有力的支持。因此,利用全新的计算机网络和珠宝首饰管理系统,已成为提高珠宝首饰公司的管理效率,改进服务水准的重要手段之一。本系统应用Visual Basic 6.0 中文版开发前台,用Microsoft Access 作后台服务器,采用客户机/服务器(C/S)管理思想来对珠宝首饰进销存管理。 关键词:管理水平, 管理效率,服务水准,珠宝首饰管理系统,客户机/服务器,管理思想
稀疏分解方法在信号去噪中的应用研究_内含源码数据论文.zip
本书由吉姆·诺埃尔和大卫·多蒂奇编辑,旨在探讨领导力发展领域的最新趋势和实践。书中不仅提供了领导力发展领域的历史回顾,还挑战了组织对领导力发展的战略视角,详细介绍了如何培养全球领导者,并提供了关于领导力发展方法、策略和系统、高潜力人才发展、高层管理参与、有效学习方法以及领导力指标等方面的深入案例研究和理论分析。此外,书中还探讨了创新的领导力发展方法,并对未来的发展趋势进行了展望。
一种基于 QR 二维码的彩色二维码编码译码设计及其软件实现.zip
【项目资源】: 单片机项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。
【项目资源】: 物联网项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。
内容概要:本文详细介绍了使用COMSOL Multiphysics的弱形式接口对三维光子晶体进行数值模拟的方法和技巧。文章通过具体的代码示例,解释了如何构建光子晶体的介电常数分布、设置弱形式PDE、处理电磁场切向连续性、应用Floquet周期边界条件以及特征值求解等关键步骤。特别强调了弱形式接口相比传统物理场接口的优势,如灵活性和对复杂边界的处理能力。文中还分享了一些实用的经验和注意事项,如布洛赫边界条件的实现、特征值求解器参数的优化配置以及网格划分的技巧。 适合人群:具备一定电磁学和数值模拟基础的研究人员或工程师,尤其是对光子晶体仿真感兴趣的读者。 使用场景及目标:①理解并掌握COMSOL弱形式接口在光子晶体仿真中的应用;②学习如何通过弱形式设置处理复杂的电磁场问题;③提高对光子晶体能带结构和带隙特性的认识;④掌握特征值求解和网格划分的最佳实践。 阅读建议:由于本文涉及较多的具体代码和物理概念,建议读者在阅读过程中结合COMSOL软件进行实际操作,同时查阅相关电磁理论书籍以加深理解。此外,对于文中提到的一些具体参数设置和技巧,可以通过尝试不同的配置来巩固所学知识。
内容概要:PT5000汽轮机滑动轴承系统模拟试验台是一个类似于电厂汽轮机发电机的缩小模型,旨在帮助用户获取汽轮机转子动态行为和滑动轴承油膜现象的实际经验,并研究振动控制方法。该试验台模拟两级涡轮机(低压和中压),每级转子两侧各有8个叶片,共计16个叶片。通过电机驱动而非涡轮发电机,可以进行启停机测试,识别共振现象。试验台还支持多种实验,如不平衡/现场动平衡、轴不对中实验、摩擦实验、油膜故障试验、轴颈轴承实验以及根据油压和温度进行的转子动力学试验。试验台配备了多种传感器和控制系统,包括电涡流传感器、温度传感器、压力传感器等,用于监测和记录实验数据。 适合人群:从事汽轮机设计、制造、维护的技术人员,以及相关专业的高校师生和研究人员。 使用场景及目标:①研究汽轮机转子的动态行为和滑动轴承的油膜现象;②进行振动控制方法的研究;③模拟再现油膜涡动转和油膜震荡,研究其控制条件;④进行不平衡、不对中、摩擦等常见故障的模拟和分析;⑤通过调整油压、温度和预加载力,研究轴的行为变化。 其他说明:该试验台不仅适用于教学和科研,还可用于工业领域的培训和技术验证。试验台具有丰富的配置和可选配件,可以根据具体需求进行定制。试验台的机械和电气参数详细列出,确保用户能够全面了解设备性能。
电影类型知识图谱构建,包含相关数据集
# 基于C++的Minimal BASIC解释器 ## 项目简介 本项目是一个C++实现的Minimal BASIC解释器。该解释器能够解释并执行一些基本的BASIC语言命令,如赋值、打印、输入、条件跳转等。用户可以通过命令行交互地输入命令,或者编写一个按行数升序依次运行的大程序。 ## 项目的主要特性和功能 1. 解释执行能够解释并执行简单的BASIC语言命令。 2. 变量定义与赋值支持定义变量并为其赋值。 3. 打印输出支持将表达式的值打印到控制台。 4. 输入支持从用户获取输入值并赋值给变量。 5. 条件跳转支持基于条件的跳转语句。 6. 注释支持注释语句,使程序更加易读。 ## 安装使用步骤 1. 准备环境确保你的开发环境已经安装了C++编译器,如GCC。 3. 编译使用CMake工具编译源代码。 4. 运行编译成功后,运行可执行文件,即可与解释器交互。 ## 注意事项
本文提出了一种结合自适应进化编程(AEP)与神经网络的方法,用于解决暂态稳定性约束最优潮流(TSCOPF)问题。AEP在优化过程中能够自动调整种群大小,以获得TSCOPF问题的解决方案。神经网络的嵌入能够降低由暂态稳定性约束引起的计算负担。文章通过在IEEE 30节点系统上测试,使用两种不同的燃料成本函数,验证了AEP方法在搜索全局解方面的有效性,并且当结合神经网络后,显著提高了计算速度。此外,本文还对神经网络的架构进行了研究和讨论。