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中此属性的大小(如果没有自己添加上去)来调整附件的大小.

    

  

    

    

猜你喜欢

转载自gy090028.iteye.com/blog/2012297