You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Apache James本地开发服务器:邮件已发送但无法收取求助

解决Apache James 3.4.0本地邮件服务器无法收取邮件的问题

从你的日志来看,邮件已经成功暂存到James的队列里,说明SMTP服务是正常工作的——收不到邮件的问题大概率出在POP3/IMAP服务配置或者客户端设置上,我给你整理几个关键排查步骤:

1. 先确认POP3/IMAP服务是否在James中启用

James 3.4.0默认可能没有开启POP3或IMAP服务,这是最常见的原因:

  • 找到James安装目录下的 conf/james-server.conf 配置文件
  • 搜索并确保以下配置项被设为 true(如果被注释了,去掉前面的#):
    popserver.enabled=true
    imapserver.enabled=true
    
  • 保存配置后重启James服务,让设置生效

2. 检查Thunderbird的收件服务器配置是否正确

客户端配置错了也会收不到邮件,重点核对这几点:

  • 服务器类型:选POP3或者IMAP(对应你刚才在James里启用的服务)
  • 服务器地址:填 localhost 就行
  • 端口:POP3默认110(非加密)/995(SSL加密);IMAP默认143(非加密)/993(SSL加密)
  • 认证方式:选「正常密码」
  • 用户名:一定要填完整的邮箱地址 test@localhost,别只填test

3. 验证James的邮件存储是否正常

邮件暂存后需要被投递到用户的邮箱目录,你可以手动检查:

  • 打开James安装目录下的 var/mail 文件夹,看看有没有 localhost/test 这个目录,里面是否有邮件文件(James默认用文件系统存邮件)
  • 如果你配置了其他存储(比如数据库),得确认数据库连接没问题,且用户对应的邮箱表有数据

4. 开启POP3/IMAP日志排查细节

如果前面的步骤都没问题,那就开详细日志找线索:

  • 编辑 conf/logback.xml 文件,添加或调整这两个日志配置:
    <logger name="org.apache.james.pop3server" level="INFO"/>
    <logger name="org.apache.james.imapserver" level="INFO"/>
    
  • 重启James后,在Thunderbird里尝试收邮件,然后去 var/log/james-server.log 里看相关日志,比如有没有认证失败、找不到邮箱这类错误提示

5. 检查端口是否被占用或拦截

最后确认一下本地的110、143、995、993端口没被其他程序占了,防火墙也没拦这些端口:

# Windows用户用这个命令查
netstat -ano | findstr "110"

# Linux/macOS用户用这个
lsof -i :110

按这个顺序排查下来,基本能解决问题。要是还不行,把POP3/IMAP的日志片段贴出来,我再帮你定位。

内容的提问来源于stack exchange,提问作者Emilio Numazaki

火山引擎 最新活动