Mail Server Test ubuntu
این صفحه راهنمای تست اتصال به میلسرور (SMTP/IMAP/POP3) در Ubuntu است. دو روش در اینجا آموزش داده میشود:
- اسکریپت سبک test-smtp.sh (بدون نیاز به نصب ابزار اضافه)
- ابزار قدرتمند swaks (SMTP Swiss Army Knife)
پیشنیازها
- سیستمعامل Ubuntu (نسخه ۲۰.۰۴ یا جدیدتر توصیه میشود)
- دسترسی کاربر با مجوز
sudo - نام میزبان یا آدرس IP میلسرور مقصد
- باز بودن پورتهای خروجی در فایروال سمت کلاینت (در صورت وجود)
| پورت | سرویس | پروتکل | رمزنگاری |
|---|---|---|---|
| ۲۵ | SMTP | ارسال | بدون رمزنگاری (یا STARTTLS) |
| ۴۶۵ | SMTPS | ارسال | SSL/TLS |
| ۵۸۷ | Submission | ارسال | STARTTLS |
| ۱۱۰ | POP3 | دریافت | بدون رمزنگاری |
| ۹۹۵ | POP3S | دریافت | SSL/TLS |
| ۱۴۳ | IMAP | دریافت | بدون رمزنگاری |
| ۹۹۳ | IMAPS | دریافت | SSL/TLS |
روش اول: اسکریپت test-smtp.sh
این اسکریپت با استفاده از قابلیت /dev/tcp هستهٔ Bash، اتصال TCP به همهٔ پورتهای استاندارد میلسرور را بررسی میکند. آدرس IP دامنه نیز بهصورت خودکار resolve و در خروجی نمایش داده میشود. نیاز به نصب هیچ ابزار اضافهای ندارد.
نصب
فایل را با نام test-smtp.sh ایجاد کنید:
nano test-smtp.sh
محتوای زیر را در آن قرار دهید:
#!/bin/bash
# test-smtp.sh — بررسی اتصال به پورتهای میلسرور
# استفاده: ./test-smtp.sh [سرور] [لیست پورتها]
SERVER="${1:-smtp.example.com}"
# پورتهای استاندارد میل؛ میتوانید با آرگومان دوم لیست سفارشی بدهید
PORTS="${2:-25 465 587 110 995 143 993}"
# یافتن آدرس IP دامنه
IP=$(getent hosts "$SERVER" | awk '{print $1}' | head -n1)
[ -z "$IP" ] && IP="(resolve failed)"
declare -A NAMES=(
[25]="SMTP"
[465]="SMTPS"
[587]="Submission"
[110]="POP3"
[995]="POP3S"
[143]="IMAP"
[993]="IMAPS"
)
echo "=== Testing mail server: $SERVER ($IP) ==="
echo "Port Service Status"
echo "-----------------------------------"
for PORT in $PORTS; do
if timeout 5 bash -c "echo > /dev/tcp/$SERVER/$PORT" 2>/dev/null; then
STATUS="OPEN"
else
STATUS="CLOSED/FILTERED"
fi
printf "%-10s %-16s %s\n" "$PORT" "${NAMES[$PORT]:-Unknown}" "$STATUS"
done
فایل را اجرایی کنید:
chmod +x test-smtp.sh
نحوه استفاده
# تست همهٔ پورتهای استاندارد
./test-smtp.sh mail.example.com
# تست پورتهای دلخواه (فقط SMTP)
./test-smtp.sh mail.example.com "25 465 587"
# اسکن یک بازهٔ پورت
./test-smtp.sh mail.example.com "$(seq 1 100)"
خروجی نمونه
=== Testing mail server: mail.example.com (192.0.2.10) === Port Service Status ----------------------------------- 25 SMTP OPEN 465 SMTPS OPEN 587 Submission CLOSED/FILTERED 110 POP3 CLOSED/FILTERED 995 POP3S CLOSED/FILTERED 143 IMAP OPEN 993 IMAPS OPEN
روش دوم: ابزار swaks
swaks (SMTP Swiss Army Knife) یک ابزار خط فرمان قدرتمند برای تست کامل و عیبیابی سرورهای SMTP است. با آن میتوانید ایمیل تستی بفرستید، احراز هویت را بررسی کنید، TLS را تست کنید و جزئیات کامل گفتگو با سرور را ببینید.
نصب
sudo apt update
sudo apt install swaks
بررسی نصب:
swaks --version
استفاده پایه
سادهترین شکل — ارسال یک ایمیل تستی به سرور:
swaks --to recipient@example.com --server mail.example.com
مثالهای پرکاربرد
۱. ارسال ایمیل تستی کامل با احراز هویت و TLS (پورت ۵۸۷):
swaks \
--from sender@example.com \
--to recipient@example.com \
--server mail.example.com \
--port 587 \
--tls \
--auth LOGIN \
--auth-user sender@example.com \
--auth-password 'YourPassword'
۲. تست فقط اتصال و گفتگوی اولیه (بدون ارسال واقعی):
swaks --server mail.example.com --quit-after EHLO
۳. نمایش جزئیات کامل گفتگو (مفید برای عیبیابی):
swaks --to test@example.com --server mail.example.com -v
۴. تست سرور بدون رمزنگاری (پورت ۲۵):
swaks --to test@example.com --server mail.example.com --port 25 --protocol SMTP
۵. تست SSL مستقیم (پورت ۴۶۵):
swaks --to test@example.com --server mail.example.com --port 465 --tls
۶. ارسال ایمیل با محتوای سفارشی:
swaks \
--to test@example.com \
--server mail.example.com \
--header "Subject: Test Mail" \
--body "This is a test email sent by swaks."
خروجی نمونه
=== Trying mail.example.com:587... === Connected to mail.example.com. <- 220 mail.example.com ESMTP Postfix -> EHLO localhost <- 250-mail.example.com <- 250-PIPELINING <- 250-SIZE 10240000 <- 250-STARTTLS <- 250-AUTH PLAIN LOGIN <- 250-ENHANCEDSTATUSCODES <- 250 8BITMIME -> STARTTLS <- 220 2.0.0 Ready to start TLS ... -> QUIT <- 221 2.0.0 Bye === Connection closed with remote host.
مقایسه دو روش
| ویژگی | test-smtp.sh | swaks |
|---|---|---|
| نیاز به نصب | خیر | بله (apt install swaks)
|
| تست اتصال TCP به چند پورت | بله | فقط یک پورت در هر بار |
| تست کامل پروتکل SMTP | خیر | بله |
| ارسال ایمیل واقعی | خیر | بله |
| تست احراز هویت (AUTH) | خیر | بله |
| تست TLS/STARTTLS | خیر | بله |
| خروجی جزئیات گفتگو | خیر | بله (-v)
|
| مناسب برای | بررسی سریع باز بودن پورتها | عیبیابی کامل و تست ارسال |
عیبیابی
| مشکل | راهحل |
|---|---|
| همهٔ پورتها CLOSED هستند | فایروال سمت سرور (مثلاً ufw) یا ISP را بررسی کنید: sudo ufw status
|
| نام سرور resolve نمیشود | تست DNS: dig mail.example.com یا nslookup mail.example.com
|
| خطای احراز هویت (۵۳۵) | نام کاربری/رمز عبور را بررسی کنید؛ در Gmail باید از App Password استفاده کنید |
| خطای TLS | مطمئن شوید پورت درست است؛ پورت ۴۶۵ برای SSL مستقیم و ۵۸۷ برای STARTTLS است |
پاسخ 550 هنگام ارسال |
گیرنده یا دامنهٔ فرستنده تأیید نشده؛ SPF/DKIM سرور را بررسی کنید |
Connection timed out |
فایروال کلاینت یا سرور؛ دسترسی به پورت خروجی را تست کنید |