Apache James使用的方法及相关心得(转)
經(jīng)過一番的辛苦努力,終于把James?配置搞定啦,好記性不如爛筆頭啊,趕緊記下我的成功經(jīng)過,以備以后查閱!
?
首先要做的就是配置域名的MX?記錄啦:
先添加一條A記錄:
mail.abc.com?指向 你的服務(wù)器IP!
然后添加域名的MX?記錄,指向mail.abc.com A?記錄(?即域名MX?記錄的值為mail.abc.com).
OK?,域名的配置就完成啦!
?
接下來安裝配置James?:
James?不需要編譯安裝,解壓即可以使用,把james?下載來后,必須先啟動一下!
進入James?根目錄下的bin?目錄,啟動:
127.0.0.1[bin]$ ./run.sh
Log?如下:
127.0.0.1[bin]$ ./run.sh
Using PHOENIX_HOME: /usr/local/james-2.3.2
Using PHOENIX_TMPDIR: /usr/local/james-2.3.2/temp
Using JAVA_HOME: /home/java/jdk1.6.0_11
Running Phoenix:
Phoenix 4.2
James Mail Server 2.3.2
Remote Manager Service started plain:4555
POP3 Service started plain:110
SMTP Service started plain:25
NNTP Service started plain:119
FetchMail Disabled
JVM exiting abnormally. Shutting down Phoenix.
?
然后按Ctrl+C?停止。
第一次運行后,系統(tǒng)會在?apps?目錄下面生成一些初始化的配置文件。如果第一次運行有問題,用?netstat?檢查一下是否有系統(tǒng)默認(rèn)的端口被占用了,比如?110,25?等。
?
進入配置文件目錄修改config.xml?文件:
127.0.0.1 [SAR-INF]$ pwd
/usr/local/james-2.3.2/apps/james/SAR-INF
127.0.0.1 [SAR-INF]$ vi config.xml
查找替換所有的?localhost?為你的域名,比如?abc.com
查找所有?autodetect?屬性,修改為?false?。?AutodetectIP?也設(shè)為?false.
注釋掉??
??????? <mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor>?
??????? <processor> relay-denied </processor>?
??????? <notice>550 - Requested action not taken: relaying denied</notice>?
??????? </mailet>
?
配置?DNS Server?,由于我未配置自己的?DNS?服務(wù)器,所以使用?Google?的?Public DNS?:?
<dnsserver>?
??????? <servers>?
? ? ? ? ? <server>8.8.8.8</server>?????????
? ? ? ? ? <server>8.8.4.4</server>?????????
? ? </servers>
</dnsserver>
設(shè)置?autodiscover?為?false
注意?,設(shè)置?DNS?這步很重要,發(fā)送郵件不成功的問題經(jīng)常會出在這里!
有些文章說?ping?域名提供商管理設(shè)置的域名?DNS?來獲得?IP?,我試過,這種方法基本上是不行了,所以我使用?Google?的?Public DNS?。
當(dāng)然,也可以自己做?DNS?服務(wù)器,使用?Bind?則可,但其麻煩程度不敢茍同,不建議新手使用!
?
配置?smtp server?,?pop3 server?等?
查找所有?myMailServer,?替換為你的域名。如:?
<helloName autodetect="false">myMailServer</helloName>?,將?myMailServer?修改為你的域名。比如:?abc.com
?
注釋以下的語句:
<mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor">
?????????? <processor> relay-denied </processor>
??????????? <notice>550 - Requested action not taken: relaying denied</notice>
???????? </mailet>
打開?smtp?認(rèn)證?
<authRequired>true</authRequired>
smtp?認(rèn)證的作用在于不讓未能授權(quán)的人使用你的郵件服務(wù)器發(fā)送垃圾郵件,在?<servername></servername>?里指定哪些域名可以使用這個郵件服務(wù)器,如:
<servername>abc.com</servername>
<servername>abc.com.cn</servername>
則當(dāng)發(fā)送人地址為?XXX.abc.com?或者?XXX.abc.com.cn?時才能通過,如果寫成?XXX.bbc.com?的話就不會通過驗證,這種方式就禁止了不法人士使用啦!
?
修改?root?口令。?account login="root" password="mypassword"
?
啟動?James(?使用?Phoenix.sh)?:
./Phoenix.sh start
?
最后使用?telnet?添加郵件用戶?(?具體命令在?telnet?后輸入?help?查看?)?:
telnet server-name 4555
?
?
http://www.iteye.com/topic/777797
http://www.iteye.com/topic/777797
簡介 James 是一個企業(yè)級的郵件服務(wù)器,它完全實現(xiàn)了smtp 和 pops 以及nntp 協(xié)議。同時,james服務(wù)器又是一個郵件應(yīng)用程序平臺。James的核心是Mailet API,而james 服務(wù)齊是一個mailet的容器。它可以讓你非常容易的實現(xiàn)出很強大的郵件應(yīng)用程序。James開源項目被廣泛的應(yīng)用于與郵件有關(guān)的項目中。你可以通過它來搭建自己的郵件服務(wù)器。我們可以利用Mailet API,編程接口來實現(xiàn)自己所需的業(yè)務(wù)。James集成了Avalon 應(yīng)用程序框架以及Phoenix Avalon?框架容器。Phoenix為james?服務(wù)器提供了強大的支持。需要說明的是Avalon開源項目目前已經(jīng)關(guān)閉。 ?快速上手 安裝james 我這次使用的安裝包是james 2.3.1。大家可以從這里下載到http://james.apache.org/download.cgi 現(xiàn)在讓我們開始我們激動人心的james之旅。首先我們將james-binary-2.3.1.zip解壓縮下載到你的安裝目錄。我們可以把這個過程理解為安裝的過程。我在這里將它解壓到c:\.并且把它改名為james.這樣我們的james就安裝好了。目錄為C:\james。很簡單吧! 準(zhǔn)備知識?- 學(xué)習(xí)一些必要的知識 在我使用james的時候讓我感覺首先理解james的應(yīng)用程序結(jié)構(gòu)是很重要的。否則你會在使用中感到很困惑。 它的應(yīng)用程序結(jié)構(gòu)是這樣的: James |_ _apps |_ _bin |_ _conf |_ _ext |_ _lib |_ _logs |_ _tools 我們重點介紹一下兩個文件夾bin?和?apps. bin目錄中的run.bat和run.sh是James的啟動程序。只要記住這個重要文件就可以。 啟動之后控制臺顯示如下: Using PHOENIX_HOME:?? C:\jamesUsing 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
溫馨提示:
GenericMailet 和GenericRecipientMatcher依賴于 apache-mailet-base 以下Maven項
<dependencies><dependency><groupId>org.apache.james</groupId><artifactId>apache-mailet-api</artifactId><version>3.1.0</version></dependency><dependency><groupId>org.apache.james</groupId><artifactId>apache-mailet-base</artifactId><version>3.1.0</version></dependency><!--<dependency>--><!--<groupId>org.apache.james</groupId>--><!--<artifactId>apache-mailet-standard</artifactId>--><!--<version>3.1.0</version>--><!--</dependency>--></dependencies>
?
Matcher?的實現(xiàn) import javax.mail.MessagingException; import org.apache.mailet.GenericRecipientMatcher; import org.apache.mailet.MailAddress; public class BizMatcher extends GenericRecipientMatcher { public boolean matchRecipient(MailAddress recipient) throws MessagingException { //只接受郵件地址包含鳴人的郵件 if (recipient.getUser().indexOf("mingren")!=-1) { return true; } return false; } }
GenericRecipientMatcher?是一個針對收件人進行過濾的matcher.
Mailet?的實現(xiàn)import java.io.IOException; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import org.apache.mailet.GenericMailet; import org.apache.mailet.Mail; import org.apache.mailet.MailAddress; public class BizMaillet extends GenericMailet { public void service(Mail mail) { MailAddress ma = mail.getSender(); System.out.println("sender:"+ma.toInternetAddress().toString()); try { MimeMessage mm = mail.getMessage(); System.out.println("content:"+(String)mm.getContent().toString()); } catch (IOException e) { e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); } } }
GenericMailet?是一個mailet的基本實現(xiàn)。
編譯 我們把這兩個java文件的class文件編譯成一個名字為:jamesstudy.jar?的jar文件。 發(fā)布-Matcher 和 Mailet以及config.xml 1.發(fā)布jar文件 我們把這個jar文件發(fā)布到C:\james\apps\james\SAR-INF\lib。 注意:如果沒有找到相關(guān)目錄,則需要先啟動一遍james,相關(guān)的文件夾才會被創(chuàng)建。還有一點需要特別說明:lib目錄是通過我們手動創(chuàng)建的。 2.將Matcher?和?Mailet發(fā)布到config.xml中,config.xml在james\apps\james\SAR-INF\下 1)我們首先找到如下內(nèi)容 <mailetpackages> <mailetpackage>org.apache.james.transport.mailetsmailetpackage> <mailetpackage>org.apache.james.transport.mailets.smimemailetpackage> mailetpackages> <matcherpackages> <matcherpackage>org.apache.james.transport.matchersmatcherpackage> <matcherpackage>org.apache.james.transport.matchers.smimematcherpackage> matcherpackages>?
2)加入包聲明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
sender:kakaxi@localhost
content:How are you today!
總結(jié)
最終我們看到發(fā)送者和正文的信息。That’s all !?大功告成。 其實james的功能是非常非常強大的,尤其是它的Mailet API能夠幫助我們完成很多與郵件郵件有關(guān)的工作如過濾垃圾郵件。用它我們甚至可以搭建我們自己的企業(yè)郵件服務(wù)器。我們最近的項目中就使用到了。我們通過james接收到的郵件,然后用matcher找到我們想要處理的郵件,然后通過mailet做一些業(yè)務(wù)上的處理。這篇文章涵蓋的面很小。如果大家有興趣可以研究一下james項目。Config.xml實際上是最重要的文件,如果你把它研究透徹了那么就就算把Mailet API研究透了。以后我可能會寫一篇相關(guān)的文章,在這就不多說了。希望這篇文章能夠?qū)Υ蠹矣兴鶈l(fā)!有所幫助!祝大家工作順利! http://www.iteye.com/topic/123845?
轉(zhuǎn)載于:https://www.cnblogs.com/softidea/p/5348057.html
總結(jié)
以上是生活随笔為你收集整理的Apache James使用的方法及相关心得(转)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Git 忽略文件
- 下一篇: JVM必备指南(转)