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邮件配置:
更新GreenMailExtension代码
替换默认SMTP端口为自定义非特权端口:@RegisterExtension private static final GreenMailExtension GREEN_MAIL_REGISTRATION = new GreenMailExtension(new ServerSetup(3025, "127.0.0.1", ServerSetup.PROTOCOL_SMTP));更新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
相关产品推荐
相关产品推荐

