家用电脑基础网络配置问题:JakartaMail发信为何包含本机名
局域网端口风险相关结论
你的局域网不存在对外开放端口的风险。
整个邮件发送流程是你的Java程序主动向mailtrap.io的SMTP服务器发起出站TCP连接,所有数据都是你本地主动向外传输的,公网侧的服务没有主动向内网发起连接请求。常规的家用/企业路由器、防火墙默认都会放行主动出站连接的返程流量,不需要你在内网网关做任何端口映射配置,也不会将你的本地设备暴露到公网可访问的范围。
设备名出现在Message-ID的原因
Message-ID是邮件协议要求的全局唯一标识字段,Jakarta Mail默认会在客户端本地生成该字段,不需要依赖上游SMTP服务器生成。
其默认生成规则为:
- 第一部分为当前时间、随机数拼接生成的唯一字符串,对应你看到的
###CODES###部分 - 第二部分为读取本地系统的当前登录用户名,对应你看到的
MYUSERNAME部分 - 第三部分为读取本地设备的主机名,对应你看到的
MY_COMPUTER_NAME部分
三部分按[随机串].[用户名]@[主机名]的格式拼接后,外层包裹尖括号就是最终的Message-ID值,所以本地设备名会直接参与该字段的生成。
如果不想暴露本地用户名和设备名,可以手动调用MimeMessage.setMessageID()方法,自己生成符合RFC规范的唯一ID覆盖默认生成值即可。
内容的提问来源于stack exchange,提问作者Antonio E.
相关产品推荐
相关产品推荐

