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

寻求测试SMTP服务器的工具:排查Fedora上Java应用发信缓慢问题

批量测试邮件发送的实用方案

我来给你几个实用的方案,帮你快速生成20-30封测试邮件,同时也给你一些排查Java应用邮件发送慢的建议:

方法1:用sendmail命令批量发送(最简单直接)

Fedora上的Postfix默认提供sendmail兼容命令,用它写个shell循环就能快速批量发邮件,而且邮件会直接进入Postfix队列,和正常应用提交的方式一致,很适合测试队列性能。

创建一个shell脚本(比如test_emails.sh):

#!/bin/bash
# 替换成你的收件邮箱
RECIPIENT="your-email@example.com"
# 发件人可以自定义,确保Postfix允许这个发件人
SENDER="test-sender@your-domain.com"

for i in {1..30}; do
    # 构造邮件内容
    cat <<EOF | sendmail -f "$SENDER" -t
To: $RECIPIENT
Subject: Test Email #$i - $(date +%H:%M:%S)

This is test email number $i, sent at $(date)
EOF
    echo "Sent test email #$i"
    # 可选:如果需要模拟真实场景的间隔,取消下面的注释
    # sleep 0.2
done

给脚本加执行权限:chmod +x test_emails.sh,然后运行它就行。

方法2:用curl调用SMTP服务(适合测试远程Postfix)

如果Java应用是连接远程的Postfix服务器,用curl直接发SMTP请求是个不错的选择,不需要依赖额外工具。

同样写个shell脚本:

#!/bin/bash
# 替换成你的Postfix服务器地址和端口(默认25,加密的话用465/587)
SMTP_SERVER="your-postfix-ip:25"
FROM="test-sender@your-domain.com"
TO="your-email@example.com"

for i in {1..30}; do
    curl --url "smtp://$SMTP_SERVER" \
         --mail-from "$FROM" \
         --mail-rcpt "$TO" \
         --upload-file - <<EOF
From: $FROM
To: $TO
Subject: Curl Test Email #$i

This is a test email sent via curl, number $i
EOF
    echo "Sent curl test email #$i"
done

如果Postfix需要认证,加--user "username:password"参数;如果用SSL加密(465端口),把smtp://改成smtps://;如果用STARTTLS(587端口),加--ssl-reqd参数。

方法3:用Python脚本(更灵活,适合复杂测试)

如果需要更灵活的控制(比如并发发送、添加附件、自定义邮件格式),用Python的smtplib写个脚本很方便,而且几乎所有Fedora系统都自带Python3。

创建test_emails.py:

import smtplib
from email.mime.text import MIMEText
from datetime import datetime

# 配置参数
SMTP_SERVER = 'your-postfix-ip'
SMTP_PORT = 25
FROM_EMAIL = 'test-sender@your-domain.com'
TO_EMAIL = 'your-email@example.com'
NUM_EMAILS = 30

for i in range(1, NUM_EMAILS + 1):
    # 构造邮件
    subject = f"Python Test Email #{i} - {datetime.now().strftime('%H:%M:%S')}"
    body = f"This is test email number {i}\nSent at: {datetime.now()}"
    
    msg = MIMEText(body)
    msg['From'] = FROM_EMAIL
    msg['To'] = TO_EMAIL
    msg['Subject'] = subject
    
    # 发送邮件
    with smtplib.SMTP(SMTP_SERVER, SMTP_PORT) as server:
        # 如果需要STARTTLS,取消下面的注释
        # server.starttls()
        # 如果需要认证,取消下面的注释并替换用户名密码
        # server.login('smtp-username', 'smtp-password')
        server.send_message(msg)
        print(f"Sent Python test email #{i}")

运行脚本:python3 test_emails.py

额外排查建议(针对Java应用邮件慢的问题)

你提到怀疑Java应用没用到Postfix队列,建议做这些检查:

  • 查看Java应用的SMTP配置:确认是不是指向了Postfix服务器的25/587端口,有没有开启mail.smtp.sendpartial等参数,避免因为单个收件人失败导致整体阻塞
  • 检查Postfix日志:查看/var/log/maillog,搜索Java应用服务器的IP或者发件人邮箱,看邮件是不是真的进入了Postfix队列,有没有被拒绝或者延迟的记录
  • 查看Postfix队列状态:运行postqueue -p,看有没有积压的邮件,或者用postcat -q <队列ID>查看具体邮件的状态
  • 测试Java应用的SMTP连接:在Java应用服务器上用telnet your-postfix-ip 25手动发一封邮件,看是不是慢,排除网络问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:34:47