Apache James使用的方法及相关心得(转)
經(jīng)過(guò)一番的辛苦努力,終于把James?配置搞定啦,好記性不如爛筆頭啊,趕緊記下我的成功經(jīng)過(guò),以備以后查閱!
?
首先要做的就是配置域名的MX?記錄啦:
先添加一條A記錄:
mail.abc.com?指向 你的服務(wù)器IP!
然后添加域名的MX?記錄,指向mail.abc.com A?記錄(?即域名MX?記錄的值為mail.abc.com).
OK?,域名的配置就完成啦!
?
接下來(lái)安裝配置James?:
James?不需要編譯安裝,解壓即可以使用,把james?下載來(lái)后,必須先啟動(dòng)一下!
進(jìn)入James?根目錄下的bin?目錄,啟動(dòng):
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?停止。
第一次運(yùn)行后,系統(tǒng)會(huì)在?apps?目錄下面生成一些初始化的配置文件。如果第一次運(yùn)行有問(wèn)題,用?netstat?檢查一下是否有系統(tǒng)默認(rèn)的端口被占用了,比如?110,25?等。
?
進(jìn)入配置文件目錄修改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ā)送郵件不成功的問(wèn)題經(jīng)常會(huì)出在這里!
有些文章說(shuō)?ping?域名提供商管理設(shè)置的域名?DNS?來(lái)獲得?IP?,我試過(guò),這種方法基本上是不行了,所以我使用?Google?的?Public DNS?。
當(dāng)然,也可以自己做?DNS?服務(wù)器,使用?Bind?則可,但其麻煩程度不敢茍同,不建議新手使用!
?
配置?smtp server?,?pop3 server?等?
查找所有?myMailServer,?替換為你的域名。如:?
<helloName autodetect="false">myMailServer</helloName>?,將?myMailServer?修改為你的域名。比如:?abc.com
?
注釋以下的語(yǔ)句:
<mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor">
?????????? <processor> relay-denied </processor>
??????????? <notice>550 - Requested action not taken: relaying denied</notice>
???????? </mailet>
打開(kāi)?smtp?認(rèn)證?
<authRequired>true</authRequired>
smtp?認(rèn)證的作用在于不讓未能授權(quán)的人使用你的郵件服務(wù)器發(fā)送垃圾郵件,在?<servername></servername>?里指定哪些域名可以使用這個(gè)郵件服務(wù)器,如:
<servername>abc.com</servername>
<servername>abc.com.cn</servername>
則當(dāng)發(fā)送人地址為?XXX.abc.com?或者?XXX.abc.com.cn?時(shí)才能通過(guò),如果寫(xiě)成?XXX.bbc.com?的話就不會(huì)通過(guò)驗(yàn)證,這種方式就禁止了不法人士使用啦!
?
修改?root?口令。?account login="root" password="mypassword"
?
啟動(dòng)?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
簡(jiǎn)介 James 是一個(gè)企業(yè)級(jí)的郵件服務(wù)器,它完全實(shí)現(xiàn)了smtp 和 pops 以及nntp 協(xié)議。同時(shí),james服務(wù)器又是一個(gè)郵件應(yīng)用程序平臺(tái)。James的核心是Mailet API,而james 服務(wù)齊是一個(gè)mailet的容器。它可以讓你非常容易的實(shí)現(xiàn)出很強(qiáng)大的郵件應(yīng)用程序。James開(kāi)源項(xiàng)目被廣泛的應(yīng)用于與郵件有關(guān)的項(xiàng)目中。你可以通過(guò)它來(lái)搭建自己的郵件服務(wù)器。我們可以利用Mailet API,編程接口來(lái)實(shí)現(xiàn)自己所需的業(yè)務(wù)。James集成了Avalon 應(yīng)用程序框架以及Phoenix Avalon?框架容器。Phoenix為james?服務(wù)器提供了強(qiáng)大的支持。需要說(shuō)明的是Avalon開(kāi)源項(xiàng)目目前已經(jīng)關(guān)閉。 ?快速上手 安裝james 我這次使用的安裝包是james 2.3.1。大家可以從這里下載到http://james.apache.org/download.cgi 現(xiàn)在讓我們開(kāi)始我們激動(dòng)人心的james之旅。首先我們將james-binary-2.3.1.zip解壓縮下載到你的安裝目錄。我們可以把這個(gè)過(guò)程理解為安裝的過(guò)程。我在這里將它解壓到c:\.并且把它改名為james.這樣我們的james就安裝好了。目錄為C:\james。很簡(jiǎn)單吧! 準(zhǔn)備知識(shí)?- 學(xué)習(xí)一些必要的知識(shí) 在我使用james的時(shí)候讓我感覺(jué)首先理解james的應(yīng)用程序結(jié)構(gòu)是很重要的。否則你會(huì)在使用中感到很困惑。 它的應(yīng)用程序結(jié)構(gòu)是這樣的: James |_ _apps |_ _bin |_ _conf |_ _ext |_ _lib |_ _logs |_ _tools 我們重點(diǎn)介紹一下兩個(gè)文件夾bin?和?apps. bin目錄中的run.bat和run.sh是James的啟動(dòng)程序。只要記住這個(gè)重要文件就可以。 啟動(dòng)之后控制臺(tái)顯示如下: 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依賴(lài)于 apache-mailet-base 以下Maven項(xiàng)
<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?的實(shí)現(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?是一個(gè)針對(duì)收件人進(jìn)行過(guò)濾的matcher.
Mailet?的實(shí)現(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?是一個(gè)mailet的基本實(shí)現(xiàn)。
編譯 我們把這兩個(gè)java文件的class文件編譯成一個(gè)名字為:jamesstudy.jar?的jar文件。 發(fā)布-Matcher 和 Mailet以及config.xml 1.發(fā)布jar文件 我們把這個(gè)jar文件發(fā)布到C:\james\apps\james\SAR-INF\lib。 注意:如果沒(méi)有找到相關(guān)目錄,則需要先啟動(dòng)一遍james,相關(guān)的文件夾才會(huì)被創(chuàng)建。還有一點(diǎn)需要特別說(shuō)明:lib目錄是通過(guò)我們手動(dòng)創(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 !?大功告成。 其實(shí)james的功能是非常非常強(qiáng)大的,尤其是它的Mailet API能夠幫助我們完成很多與郵件郵件有關(guān)的工作如過(guò)濾垃圾郵件。用它我們甚至可以搭建我們自己的企業(yè)郵件服務(wù)器。我們最近的項(xiàng)目中就使用到了。我們通過(guò)james接收到的郵件,然后用matcher找到我們想要處理的郵件,然后通過(guò)mailet做一些業(yè)務(wù)上的處理。這篇文章涵蓋的面很小。如果大家有興趣可以研究一下james項(xiàng)目。Config.xml實(shí)際上是最重要的文件,如果你把它研究透徹了那么就就算把Mailet API研究透了。以后我可能會(huì)寫(xiě)一篇相關(guān)的文章,在這就不多說(shuō)了。希望這篇文章能夠?qū)Υ蠹矣兴鶈l(fā)!有所幫助!祝大家工作順利! http://www.iteye.com/topic/123845?
轉(zhuǎn)載于:https://www.cnblogs.com/softidea/p/5348057.html
總結(jié)
以上是生活随笔為你收集整理的Apache James使用的方法及相关心得(转)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Git 忽略文件
- 下一篇: JVM必备指南(转)