• Linux服务器 james邮箱服务器搭建 (附java测试Demo)


    准备工作

    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

    1. <postmaster>Postmaster@localhostpostmaster>
    2. <servernames autodetect="true" autodetectIP="true">
    3. <servername>localhostservername>
    4. servernames>

    修改为:

    autodetect设为true会自动侦测你的主机名,设成false会用你指定的server name
    autodetectIP设为true会为你的servername加上ip,如果开了一个用户user,那么他的邮件地址就是user@email.com

    1. <postmaster>Postmaster@email.compostmaster>
    2. <servernames autodetect="false" autodetectIP="false">
    3. <servername>email.comservername>
    4. servernames>

    2.注释下面配置

    3.查找所有的myMailServer 替换为你自己的域名

    <helloName autodetect="true">myMailServerhelloName>
    

    修改为:

    <helloName autodetect="true">email.comhelloName>
    

    5.设置身份认证,取消注释

    <authRequired>trueauthRequired>
    

    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

    1. package com.liang.sender;
    2. import javax.mail.MessagingException;
    3. import java.util.Scanner;
    4. import javax.mail.*;
    5. import javax.mail.internet.InternetAddress;
    6. import javax.mail.internet.MimeMessage;
    7. import java.util.Properties;
    8. public class Main {
    9. public static void main(String[] args) {
    10. //发送者账号密码
    11. final String user = "ronxxao.lxxng";
    12. final String password = "1xx3x";
    13. //接收者邮箱
    14. final String recipient = "lixxxry@163.com";
    15. Scanner scanner = new Scanner(System.in);
    16. StringBuilder sb = new StringBuilder();
    17. String s = "";
    18. System.out.println("请输入要发送的信息");
    19. while (!(s = scanner.nextLine()).equals("end")) {
    20. sb.append(s);
    21. sb.append("
      "
      );
    22. }
    23. try {
    24. sendEmail(user, password, recipient, "test", sb.toString());
    25. } catch (MessagingException e) {
    26. e.printStackTrace();
    27. }
    28. }
    29. private static void sendEmail(String user, String password, String recipient, String title, String sendMessage)
    30. throws MessagingException {
    31. Properties p = new Properties();
    32. p.setProperty("mail.smtp.host", "email.xxxxx.top");//发送者邮箱服务器
    33. p.setProperty("mail.smtp.port", "25");//发送者端口
    34. p.setProperty("mail.smtp.auth", "true");//是否开启权限控制
    35. p.setProperty("mail.transport", "smtp");//协议
    36. Session session = Session.getInstance(p, new Authenticator() {
    37. @Override
    38. public PasswordAuthentication getPasswordAuthentication() {
    39. return new PasswordAuthentication(user, password);
    40. }
    41. });
    42. Message message = new MimeMessage(session);
    43. message.setFrom(new InternetAddress(user));
    44. //设置收件人地址
    45. message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipient));
    46. message.setSubject(title);
    47. message.setContent(sendMessage, "text/html;charset=UTF-8");
    48. try {
    49. Transport.send(message, user, password);
    50. } catch (AuthenticationFailedException e) {
    51. System.out.println("身份验证失败");
    52. }
    53. System.out.println("sent");
    54. }
    55. }

  • 相关阅读:
    spring import用法
    mysql导入CSV乱码问题解决
    编写定时任务中间件笔记
    消灭空指针,Java 8 给我们更好的解决方案
    node版本管理工具nvm
    香港回归20余年,图扑数字孪生港珠澳大桥,超震撼
    【QT+QGIS跨平台编译】056:【pdal_lazperf+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
    2023-10-23 LeetCode每日一题(老人的数目)
    PTA 6-1 删除字符串中所有*
    【sdk】- 对接阿里云抠图
  • 原文地址:https://blog.csdn.net/LMR1314/article/details/125989288