You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Actions运行GreenMailExtension遇SMTP端口权限拒绝问题求助

解决GitHub Actions中GreenMail绑定端口25的权限拒绝问题

问题原因

Linux系统中,1-1023范围内的端口属于特权端口,仅root用户有权绑定。GitHub Actions的ubuntu-latest运行器中,测试进程以普通用户身份执行,无法绑定默认SMTP端口25,因此触发java.net.BindException: Permission denied错误。

解决方案

方案1:使用非特权端口(推荐)

修改GreenMail使用1024以上的非特权端口(例如3025),同步更新Spring Boot邮件配置:

  1. 更新GreenMailExtension代码
    替换默认SMTP端口为自定义非特权端口:

    @RegisterExtension
    private static final GreenMailExtension GREEN_MAIL_REGISTRATION = new GreenMailExtension(new ServerSetup(3025, "127.0.0.1", ServerSetup.PROTOCOL_SMTP));
    
  2. 更新Spring Boot测试配置
    在测试环境配置文件(如application-test.yml)中修改邮件端口:

    spring:
      mail:
        host: 127.0.0.1
        port: 3025
        protocol: smtp
    

方案2:使用sudo运行测试(不推荐)

若必须使用端口25,可在GitHub Actions工作流中以root权限执行Maven命令:

- name: Run the Maven verify phase
  run: sudo mvn --batch-mode test -X -Dtest=RegistrationTest

注意:此方式可能导致测试生成的文件权限异常,影响后续步骤,仅作为临时替代方案。

验证

修改完成后重新触发GitHub Actions工作流,RegistrationTest中的邮件确认测试即可正常执行。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 20:40:24