paulwong

          用JAMES實現自己的郵件服務器

          應用服務器Apache企業應用XMLC
          簡介
          James 是一個企業級的郵件服務器,它完全實現了smtp 和 pops 以及nntp 協議。同時,james服務器又是一個郵件應用程序平臺。James的核心是Mailet API,而james 服務齊是一個mailet的容器。它可以讓你非常容易的實現出很強大的郵件應用程序。James開源項目被廣泛的應用于與郵件有關的項目中。你可以通過它來搭建自己的郵件服務器。我們可以利用Mailet API,編程接口來實現自己所需的業務。James集成了Avalon 應用程序框架以及Phoenix Avalon 框架容器。Phoenix為james 服務器提供了強大的支持。需要說明的是Avalon開源項目目前已經關閉。
          快速上手
          安裝james
          我這次使用的安裝包是james 2.3.1。大家可以從這里下載到http://james.apache.org/download.cgi
          現在讓我們開始我們激動人心的james之旅。首先我們將james-binary-2.3.1.zip解壓縮下載到你的安裝目錄。我們可以把這個過程理解為安裝的過程。我在這里將它解壓到c:\.并且把它改名為james.這樣我們的james就安裝好了。目錄為C:\james。很簡單吧!

          準備知識 - 學習一些必要的知識
          在我使用james的時候讓我感覺首先理解james的應用程序結構是很重要的。否則你會在使用中感到很困惑。
          它的應用程序結構是這樣的:
          James
          |_ _apps
          |_ _bin
          |_ _conf
          |_ _ext
          |_ _lib
          |_ _logs
          |_ _tools
          我們重點介紹一下兩個文件夾bin 和 apps.
          bin目錄中的run.bat和run.sh是James的啟動程序。只要記住這個重要文件就可以。
          啟動之后控制臺顯示如下:
          Using PHOENIX_HOME: C:\james
          Using PHOENIX_TMPDIR: C:\james\temp
          Using JAVA_HOME: C:\j2sdk1.4.2_02
          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
          Apps 目錄下有個james的子目錄這個目錄是它的核心。
          james
          |_ _SAR-INF
          |_ _conf
          |_ _logs
          |_ _var
          |_mail
          |_address-error
          |_error
          |_indexes
          |_outgoing
          |_relay-denied
          |_spam
          |_spool
          |_nntp
          |_....

          |_users
          SAR-INF 下有一個config.xml是james中的核心配置文件。
          Logs 包含了與james有關的Log。調試全靠它了。
          Var 包含了一些文件夾通過它們的名字我們大概也能猜測出它們的用途。Mail主要用于存儲郵件。nntp主要用于新聞服務器。Users用于存儲所有郵件服務器的用戶。也就是郵件地址前面的東東。如:pig@sina.com的pig就是所謂用用戶。

          創建用戶:
          我們在James上建若干用戶,用來測試收發郵件。當然如果你不用james本身的用戶也可以。James以telnet 的方式提供了接口用來添加用戶。下面我來演示一下。
          首先使用telnet來連接james的remote manager .
          1.telnet localhost 4555 回車
          2.然后輸入管理員用戶名和密碼(user/pwd : root/root 是默認設置這個可以在config.xml中修改)
          JAMES Remote Administration Tool 2.3.1
          Please enter your login and password
          Login id:
          root
          Password:
          root
          Welcome root. HELP for a list of commands

          3.添加用戶
          adduser kakaxi kakaxi
          User kakaxi added

          Adduser mingren mingren
          User mingren added

          4.查看添加情況
          listusers
          Existing accounts 2
          user: mingren
          user: kakaxi
          得到上面的信息說明我們已經添加成功。


          發送器
          這個類主要用來測試我們的郵件服務器,可以不用將其打入包中。
          java 代碼 
          package com.paul.jamesstudy;   
            
          import java.util.Date;   
          import java.util.Properties;   
            
          import javax.mail.Authenticator;   
          import javax.mail.Message;   
          import javax.mail.PasswordAuthentication;   
          import javax.mail.Session;   
          import javax.mail.Transport;   
          import javax.mail.internet.InternetAddress;   
          import javax.mail.internet.MimeMessage;   
            
          public class Mail {   
              private String mailServer, From, To, mailSubject, MailContent;   
            
              private String username, password;   
            
              private Session mailSession;   
            
              private Properties prop;   
            
              private Message message;   
            
              // Authenticator auth;//認證   
              public Mail() {   
                  // 設置郵件相關   
                  username = "kakaxi";   
                  password = "kakaxi";   
                  mailServer = "localhost";   
                  From = "kakaxi@localhost";   
                  To = "mingren@localhost";   
                  mailSubject = "Hello Scientist";   
                  MailContent = "How are you today!";   
              }   
              public void send(){   
                  EmailAuthenticator mailauth =    
          new EmailAuthenticator(username, password);   
                  // 設置郵件服務器   
                  prop = System.getProperties();   
                  prop.put("mail.smtp.auth", "true");   
                  prop.put("mail.smtp.host", mailServer);   
                  // 產生新的Session服務   
                  mailSession = mailSession.getDefaultInstance(prop,   
                          (Authenticator) mailauth);   
                  message = new MimeMessage(mailSession);   
            
                  try {   
                  message.setFrom(new InternetAddress(From)); // 設置發件人   
                  message.setRecipient(Message.RecipientType.TO,    
          new InternetAddress(To));// 設置收件人   
                  message.setSubject(mailSubject);// 設置主題   
                  message.setContent(MailContent, "text/plain");// 設置內容   
                  message.setSentDate(new Date());// 設置日期   
                  Transport tran = mailSession.getTransport("smtp");   
                  tran.connect(mailServer, username, password);   
                  tran.send(message, message.getAllRecipients());   
                  tran.close();   
                  } catch (Exception e) {   
                      e.printStackTrace();   
                  }   
              }   
              public static void main(String[] args) {   
                  Mail mail;   
                  mail = new Mail();   
                  System.out.println("sending");   
                  mail.send();   
                  System.out.println("finished!");   
              }   
            
          }   
            
          class EmailAuthenticator extends Authenticator {   
              private String m_username = null;   
            
              private String m_userpass = null;   
            
              void setUsername(String username) {   
                  m_username = username;   
              }   
            
              void setUserpass(String userpass) {   
                  m_userpass = userpass;   
              }   
            
              public EmailAuthenticator(String username, String userpass) {   
                  super();   
                  setUsername(username);   
                  setUserpass(userpass);   
              }   
            
              public PasswordAuthentication getPasswordAuthentication() {   
                  return new PasswordAuthentication(m_username, m_userpass);   
              }   
          }   


          posted on 2012-12-16 13:14 paulwong 閱讀(908) 評論(0)  編輯  收藏 所屬分類: SPRING INTERGRATION

          主站蜘蛛池模板: 高淳县| 青河县| 宣汉县| 连山| 桂阳县| 新营市| 融水| 清水县| 奉化市| 河南省| 远安县| 济宁市| 乐都县| 云阳县| 灵武市| 得荣县| 独山县| 鹤壁市| 蓬莱市| 黎城县| 平凉市| 兴仁县| 漳平市| 耿马| 璧山县| 四子王旗| 隆回县| 双辽市| 攀枝花市| 林口县| 吉木乃县| 龙井市| 甘谷县| 奉化市| 安化县| 通城县| 南丹县| 乡城县| 皮山县| 咸阳市| 迁西县|