Mail Server Test ubuntu

From wiki karavi
Revision as of 11:54, 16 August 2026 by Karavi (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

این صفحه راهنمای تست اتصال به میل‌سرور (SMTP/IMAP/POP3) در Ubuntu است. دو روش در اینجا آموزش داده می‌شود:

  1. اسکریپت سبک test-smtp.sh (بدون نیاز به نصب ابزار اضافه)
  2. ابزار قدرتمند swaks (SMTP Swiss Army Knife)

Template:Note

پیش‌نیازها

  • سیستم‌عامل 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

Template:Note

Template:Note

Template:Warning

روش دوم: ابزار 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

Template:Note

مثال‌های پرکاربرد

۱. ارسال ایمیل تستی کامل با احراز هویت و 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.

Template:Note

مقایسه دو روش

ویژگی test-smtp.sh swaks
نیاز به نصب خیر بله (apt install swaks)
تست اتصال TCP به چند پورت بله فقط یک پورت در هر بار
تست کامل پروتکل SMTP خیر بله
ارسال ایمیل واقعی خیر بله
تست احراز هویت (AUTH) خیر بله
تست TLS/STARTTLS خیر بله
خروجی جزئیات گفتگو خیر بله (-v)
مناسب برای بررسی سریع باز بودن پورت‌ها عیب‌یابی کامل و تست ارسال

Template:Tip

عیب‌یابی

مشکل راه‌حل
همهٔ پورت‌ها 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 فایروال کلاینت یا سرور؛ دسترسی به پورت خروجی را تست کنید

منابع