apache james 的配置学习
Apache james是一个开放源代码的完全基于Java开发的邮箱系统.它的介绍说明可以上官网或者百度上面了解.我在这里记录一下我最近尝试使用james遇到的问题.
首先,配置apache james.
james 基于Java 依赖于Java,所以要检查 james 所在服务器的JAVA_HOME 环境变量有没有设置.
设置好环境变量之后, 进入\james-2.3.2\bin,目录双击run.bat就可以使用默认的配置启动james服务了.
当然,默认配置不能满足我们的需要 ,那么需要进入.\james-2.3.2\apps\james\SAR-INF\目录中编辑config.xml文件进行定制.
1).将 :(52行左右)
<postmaster>Postmaster@localhost</postmaster>
修改为 :
<postmaster>Postmaster@自定义后缀名(如 cepri.com)</postmaster>
2).将 :(71行左右)
<servernames autodetect="true" autodetectIP="true">
<!-- CONFIRM? -->
<servername>localhost</servername>
</servernames>
修改为 :
<servernames autodetect="false" autodetectIP="false">
<!-- CONFIRM? -->
<servername>自定义后缀名(如 cepri.com)</servername>
</servernames>
3).将 :(551行左右)
<mailet match="RemoteAddrNotInNetwork=127.0.0.1"
class="ToProcessor">
<processor> relay-denied </processor>
<!--[if !supportLists]-->1. <!--[endif]--><notice>550 - Requested action not taken: relaying denied</notice>
</mailet>
以上部分整体注释掉.
4).将 :(896行左右)
<authRequired>true</authRequired> 的注释去掉,使其生效.
默认情况下,james使用的是文件系统存数用户账户和邮件等信息.如果要使用数据库存储,
还需要进行下面设置
1,找到<users-store>标签
将下边的这种文件存储方式注释
<repository name="LocalUsers" class="org.apache.james.userrepository.UsersFileRepository">
<destination URL="file://var/users/"/>
</repository>
把下边的数据库存储方式的注释打开或者新增
<repository name="LocalUsers" class="org.apache.james.userrepository.JamesUsersJdbcRepository" destinationURL="db://maildb/users">
<sqlFile>file://conf/sqlResources.xml</sqlFile>
</repository>
2,找到<data-source name="maildb"这一行修改成以下内容
<data-source name="maildb" class="org.apache.james.util.dbcp.JdbcDataSource">
<driver>oracle.jdbc.driver.OracleDriver</driver>
<dburl>jdbc:oracle:thin:@192.168.1.1:1521:test</dburl>
<user>test</user>
<password>test</password>
<keep-alive>select 1 from dual</keep-alive>
<testOnBorrow>true</testOnBorrow>
<testOnReturn>true</testOnReturn>
<max>50</max>
<poolPreparedStatements>true</poolPreparedStatements>
</data-source>
3,找到<inboxRepository>
将下边的这种文件存储方式注释
<inboxRepository>
<repository destinationURL="file://var/mail/inboxes/" type="MAIL"/>
</inboxRepository>
把下边的数据库存储方式的注释打开或者新增
<inboxRepository>
<repository destinationURL="db://maildb/inbox/" type="MAIL"/>
</inboxRepository>
4,找到<spoolrepository
将下边的这种文件存储方式注释
<spoolrepository destinationURL="file://var/mail/spool/" type="SPOOL"/>
把下边的数据库存储方式的注释打开或者新增
<repository destinationURL="dbfile://maildb/spool/spool" type="SPOOL"/>
5,将相应驱动拷贝到james/lib/下
我个人使用的是邮箱账户存储在数据库中,启动存储在文件中,
这样的好处是增删用户直接操作数据库就可以了,james 用户密码所用的加密方式是sha加密
/** * 可以用于 md5 或者 sha 加密 * * @param pass * 要加密的明文 * @param algorithm * 加密方式 (md5或 sha) * @return * @throws NoSuchAlgorithmException */ public static String digestString(String pass, String algorithm) throws NoSuchAlgorithmException { MessageDigest md; ByteArrayOutputStream bos; try { md = MessageDigest.getInstance(algorithm); byte[] digest = md.digest(pass.getBytes("iso-8859-1")); bos = new ByteArrayOutputStream(); OutputStream encodedStream = MimeUtility.encode(bos, "base64"); encodedStream.write(digest); return bos.toString("iso-8859-1"); } catch (IOException ioe) { throw new RuntimeException("Fatal error: " + ioe); } catch (MessagingException me) { throw new RuntimeException("Fatal error: " + me); } }
如果邮件内容存在数据库的话,会遇到附件大小1M的限制,是因为mysql的默认max_allowed_packet大小为1M,
可以改my.ini中此属性的大小(如果没有自己添加上去)来调整附件的大小.
推荐阅读
-
linux 中的MYSQL命令汇总 适合学习linux下配置mysql的朋友
-
通过mod_python配置运行在Apache上的Django框架
-
简单的Apache+FastCGI+Django配置指南
-
修改apache配置文件去除thinkphp url中的index.php
-
Laravel 5.5官方推荐的Nginx配置学习教程
-
java 学习笔记(入门篇)_java的安装与配置
-
Windows PHP5和Apache的安装与配置
-
python+Django+apache的配置方法详解
-
简单的Apache+FastCGI+Django配置指南
-
通过mod_python配置运行在Apache上的Django框架