准备工作
james 压缩包下载:
链接:https://pan.baidu.com/s/1SIGj2HIhzPl2DVhl8bS_5g?pwd=7tjj
提取码:7tjj
安装所需环境:
因为是apache开源java项目所以Linux必须要有java环境:
安装
1.解压
tar -xf james-binary-2.3.2.1.tar.gz
2.进入bin目录,给phoenix.sh run.sh 两个文件赋权
chmod +wxr run.sh phoenix.sh
会遇见的问题:
1. 权限不足:出现原因有两种①你使用的是普通用户权限,他需要启动的端口都是100上下的,普通用户没有权限。②部分文件没有执行权限,你使用su获取的root用户,启动执行脚本,导致部分解压出来的文件所属用户组是root,你没有执行权限。
2.地址被占用:原因:端口被占用,占用的端口,启动服务需要的端口有
4555 连接端口
25 SMTP端口
110 POP3端口
119 NNTP端口
解决办法:
1.直接使用root用户全局操作。
2.在执行./run.sh脚本即第四步之后,在./apps/james/SAR-INF 文件下有个config.xml文件,该文件是邮箱服务器的配置文件,在该文件中修改所有的端口号即可,普通用户就可以调度修改后的端口。
3.部分文件没有执行权限,如果是用su获取root权限执行了一遍脚本的,可以使用root权限下chown -R '用户':'组' '文件'的方式修改文件下所有的用户组。
3.执行脚本
./run.sh
4.修改域名配置
4.1. 创建虚拟域名
如果是外网有域名的话就直接进入4.2
执行:
vi /etc/hosts
在文件中添加: 127.0.0.1 email.com
既可在该网段下配置虚拟域名
4.2. 修改配置
进入./apps/james/SAR-INF 文件下的config.xml
1.配置localhost
<postmaster>Postmaster@localhost</postmaster>
<servernames autodetect="true" autodetectIP="true">
<servername>localhost</servername>
</servernames>
修改为:
autodetect设为true会自动侦测你的主机名,设成false会用你指定的server name
autodetectIP设为true会为你的servername加上ip,如果开了一个用户user,那么他的邮件地址就是[email protected]
<postmaster>[email protected]</postmaster>
<servernames autodetect="false" autodetectIP="false">
<servername>email.com</servername>
</servernames>
2.注释下面配置
<!--<mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor">
<processor> relay-denied </processor>
<notice>550 - Requested action not taken: relaying denied</notice>
</mailet>-->
3.查找所有的myMailServer 替换为你自己的域名
<helloName autodetect="true">myMailServer</helloName>
修改为:
<helloName autodetect="true">email.com</helloName>
5.设置身份认证,取消注释
<authRequired>true</authRequired>
6.修改密码(可改可不改)
<account login="root" password="root"/>
默认是!chxxx! 不太记得了
5.创建邮箱账号
1.进入控制台:telnet localhost 4555
2.输入用户名密码: root/root
3.创建用户:adduser user 123
会遇见的问题:
1.没有telnet命令。
解决办法:
1.检测telnet-server的rpm包是否安装。执行:rpm -qa telnet-server 。
2.若未安装,则执行:yum install telnet-server 进行安装,反之直接进入第三步。
3.检测telnet-server的rpm包是否安装。执行:rpm -qa telnet 。4.若未安装,则执行:yum install telnet,反之直接进入第五步。
5.重新启动xinetd守护进程 service xinetd restart 。
6.如果两个都安装了都还没有用就重启服务器。
6.Foxmail测试
下载链接:Foxmail for Mac
选择其他邮箱 > 手动设置 >
> 输入自己添加的账号密码,服务器就填写自己的服务器地址
会遇见的问题:
1.云服务器防火墙没开。
2.虚拟域名有问题,可以在自己FoxMail的电脑上测一下可以不可以 ping 通
7.java代码测试Demo
package com.liang.sender;
import javax.mail.MessagingException;
import java.util.Scanner;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
public class Main {
public static void main(String[] args) {
//发送者账号密码
final String user = "ronxxao.lxxng";
final String password = "1xx3x";
//接收者邮箱
final String recipient = "[email protected]";
Scanner scanner = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
String s = "";
System.out.println("请输入要发送的信息");
while (!(s = scanner.nextLine()).equals("end")) {
sb.append(s);
sb.append("<br>");
}
try {
sendEmail(user, password, recipient, "test", sb.toString());
} catch (MessagingException e) {
e.printStackTrace();
}
}
private static void sendEmail(String user, String password, String recipient, String title, String sendMessage)
throws MessagingException {
Properties p = new Properties();
p.setProperty("mail.smtp.host", "email.xxxxx.top");//发送者邮箱服务器
p.setProperty("mail.smtp.port", "25");//发送者端口
p.setProperty("mail.smtp.auth", "true");//是否开启权限控制
p.setProperty("mail.transport", "smtp");//协议
Session session = Session.getInstance(p, new Authenticator() {
@Override
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user, password);
}
});
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(user));
//设置收件人地址
message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipient));
message.setSubject(title);
message.setContent(sendMessage, "text/html;charset=UTF-8");
try {
Transport.send(message, user, password);
} catch (AuthenticationFailedException e) {
System.out.println("身份验证失败");
}
System.out.println("sent");
}
}
文章评论