James配置邮件系统: 1>服务器端配置,邮件服务的名字叫myEmail或myEmail.com,服务器管理员名Admin 首先停止已开启的James邮件服务,然后打开文件James\apps\james\SAR-INF\config.xml。 Ø 在config.xml文件中,找到Postmaster@localhost, 把此项改为Admin@myEmail,同时,找到位于 <!-- By default, the servername 'localhost' is specified. This can be removed, if required. --> - <!-- --> - <!-- Warning: If you are using fetchpop it is important to include the --> - <!-- fetched domains in the server name list to prevent looping. --> - <servernames autodetect="true" autodetectIP="true"> - <!-- CONFIRM? --> <servername> localhost </servername> </servernames> 的localhost,把此项改为myEmail。这样就可以让其它机器也能访问邮件系统。 Ø DNS配置:找到同上文件中<dnsserver>段中的如下程序段: - <dnsserver> - <servers> - <!-- CONFIRM? --> - <!-- Enter ip address of your DNS server, one IP address per server --> - <!-- element. The default configuration assumes a DNS server on the localhost. --> <server>127.0.0.1</server> </servers> <authoritative>false</authoritative> </dnsserver> 将127.0.0.1的位置填入DNS服务器的IP地址; Ø 修改管理员密码: 找到同上文件中的<administrator_accounts>段,如下程序段 - <administrator_accounts> - <!-- CHECKME! --> - <!-- Change the default login/password. --> <account login="root" password="root" /> </administrator_accounts> 将默认用户名root与密码root修改为需要的值 Ø 修改telnet管理程序登录端口 :(默认为4555) 找到同上文件中的<remotemanager>段下的port如下程序段 - <remotemanager> <port>4555</port> - <!-- Uncomment this if you want to bind to a specific inetaddress --> - <!-- 将<port>4555</port>之间的端口号4555改为需要的端口。 2> 客户端配置:(略) 3> 帐号管理 James的账号管理是通过telnet完成的,登录命令为: telnet myEmail 4555 其中myEmail也可以换成IP,4555是端口号。登录时需要用户名和密码,开始默认的用户名和密码均为root。若登录成功,提示如下: JAMES Remote Administration Tool 2.1 Please enter your login and password Login id: 此时输入root用户名,然后会出现: Password: 输入密码root 注意:在有些操作系统如Windows2000上,用户输入均不显示。 telnet命令列表: help 显示帮助 Listusers 列出目前存在的账户 Countusers 显示目前存在的账户的数量 addusers [用户名] [密码] 添加新用户 verify [用户名] 验证特定用户是否存在 deluser [用户名] 删除已存在用户 setpassword [用户名] [密码] 设置某一用户的密码 setalias [别名] [用户名] 从本地将[别名]的所有邮件转寄[用户名] unsetalias [别名] 取消setalias设置 setforwarding [用户名] [email地址] 将[用户名]的邮件转寄指定[email地址] unsetforwarding [用户名] 取消setforwarding设置 user [资源] 变为另一用户的资源 shutdown 停止当前James邮件服务的JVM程序(对于James为后台服务时,用此命令很方便) Quit 断开telnet连接 4>用户信息的数据库存储 James邮件用户的用户信息默认保存在apps\james\var\users目录下,通过修改配置文件apps\james\SAR-INF\config.xml,可以把用户信息保存到数据库中,配置方法如下: 假设使用的是MySQL数据库: 第一步:首先将MySQL的驱动程序(例如:mysql-connector-java-3.1.6-bin.jar)考到james的lib目录下(例如:D:\james\lib) 第二步:在MySQL中新建一个数据库mail; 第三步:打开config.xml,找到<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> 其实如不修改也行,因为文件下面也有实例,不过是用<!-- 和 --> 注释掉的,打开即可;记住把 <repository name="LocalUsers" class="org.apache.james.userrepository.UsersFileRepository"> <destination URL="file://var/users/"/> </repository> 用<!-- 和 --> 注释掉; 通过修改,我们就把用户信息的存储介质从file改成了db,<sqlFile>是指明了在db中的数据表结构及相关数据库信息。 第四步:仍然是config.xml,找到<data-sources>项,默认内容为空,把此项内容修改为: <data-source name="maildb" class="org.apache.james.util.mordred.JdbcDataSource"> <driver>org.gjt.mm.mysql.Driver</driver> <dburl>jdbc:mysql://127.0.0.1/mail</dburl> <user>root</user> <password></password> <max>20</max> </data-source> 或打开文件下面实例的<!-- 和 --> 注释 <driver>是指MySQL的JDBC驱动,注意这个默认的<driver>是有问题的,要改成MySQL的驱动程序中Driver.class的路径,即: <driver>com.mysql.jdbc.Driver</driver> <dburl>指数据库的访问路径,IP后的mail即MySQL中新建数据库名,接下来是用户名、密码及最大连接数。 再次启动时,james将在mail数据库中自动创建有关用户的表格。 至此,数据库配置完成,启动James,若正常无误,请通过telnet添加一个新用户,比如adduser holen 123456,然后检查MySQL中的mail数据库,下面将有一个表users,这是James根据file://conf /sqlResources.xml的内容创建的。 通过以上配置,James的用户信息就可以保存在数据库中了。
今天要测试自己开发的邮件服务器为什么往外网发送不了邮件的问题,只好先在局域网试试看是程序的问题还是什么其他的问题,于是乎就在弄了一台linux服务器,上面拷贝了一个james mailserver 2.3.1
装jdk:》sh jdk-6u11-linux-i586.bin
查看端口占用:》lsof -i:25
配置james就不多说了,现在网上很多资料
配置james名字为:
motoplus.com建用户:
fangrn本机hosts文件添加:
133.64.140.62 motoplus.com发送短信测试
import java.util.*; import javax.mail.internet.*; import javax.mail.*; public class javamail163 { public static void main(String[] args) throws AddressException, MessagingException { Properties mailpro = new Properties(); mailpro.setProperty("mail.smtp.host", "motoplus.com"); Session session = Session.getDefaultInstance(mailpro); session.setDebug(true); MimeMessage msg = new MimeMessage(session); msg.setFrom(new InternetAddress("fangrn@fangrn.com")); msg.setRecipient(Message.RecipientType.TO, new InternetAddress("fangrn@motoplus.com")); msg.setSubject("测试免认证方式发送邮件!!!"); msg.setText("测试一下,邮件来自fangrn"); Transport.send(msg); } }测试通过了
相关资源:james3.0 邮件服务器部署运行