Mail Server Test ubuntu

From wiki karavi
Revision as of 11:40, 16 August 2026 by Karavi (talk | contribs) (Created page with "# تست اتصال به میل‌سرور در Ubuntu > **این صفحه بخشی از مستندات ابزارهای خط فرمان است.** دو روش برای تست اتصال به میل‌سرور (SMTP/IMAP/POP3) در Ubuntu توضیح داده شده است: > ۱. اسکریپت سبک **test-smtp.sh** (بدون نیاز به نصب ابزار اضافه) > ۲. ابزار قدرتمند **swaks** (SMTP Swiss Army Knife) --- ## فهرست مطالب - [...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
  1. تست اتصال به میل‌سرور در Ubuntu

> **این صفحه بخشی از مستندات ابزارهای خط فرمان است.** دو روش برای تست اتصال به میل‌سرور (SMTP/IMAP/POP3) در Ubuntu توضیح داده شده است: > ۱. اسکریپت سبک **test-smtp.sh** (بدون نیاز به نصب ابزار اضافه) > ۲. ابزار قدرتمند **swaks** (SMTP Swiss Army Knife)

---

    1. فهرست مطالب

- [پیش‌نیازها](#پیش‌نیازها) - [روش اول: اسکریپت test-smtp.sh](#روش-اول-اسکریپت-test-smtpsh)

 - [نصب](#نصب)
 - [نحوه استفاده](#نحوه-استفاده)
 - [خروجی نمونه](#خروجی-نمونه)

- [روش دوم: ابزار swaks](#روش-دوم-ابزار-swaks)

 - [نصب](#نصب-1)
 - [استفاده پایه](#استفاده-پایه)
 - [مثال‌های پرکاربرد](#مثالهای-پرکاربرد)

- [مقایسه دو روش](#مقایسه-دو-روش) - [عیب‌یابی](#عیبیابی) - [منابع](#منابع)

---

    1. پیش‌نیازها

- سیستم‌عامل **Ubuntu** (نسخه ۲۰.۰۴ یا جدیدتر توصیه می‌شود) - دسترسی کاربر با مجوز `sudo` - نام میزبان یا آدرس IP میل‌سرور مقصد - باز بودن پورت‌های خروجی در فایروال سمت کلاینت (در صورت وجود)

| پورت | سرویس | پروتکل | رمزنگاری | |------|-------|--------|----------| | ۲۵ | SMTP | ارسال | بدون رمزنگاری (یا STARTTLS) | | ۴۶۵ | SMTPS | ارسال | SSL/TLS | | ۵۸۷ | Submission | ارسال | STARTTLS | | ۱۱۰ | POP3 | دریافت | بدون رمزنگاری | | ۹۹۵ | POP3S | دریافت | SSL/TLS | | ۱۴۳ | IMAP | دریافت | بدون رمزنگاری | | ۹۹۳ | IMAPS | دریافت | SSL/TLS |

---

    1. روش اول: اسکریپت test-smtp.sh

این اسکریپت با استفاده از قابلیت `/dev/tcp` هستهٔ Bash، اتصال TCP به همهٔ پورت‌های استاندارد میل‌سرور را بررسی می‌کند. **نیاز به نصب هیچ ابزار اضافه‌ای ندارد.**

      1. نصب

فایل را با نام `test-smtp.sh` ایجاد کنید:

```bash nano test-smtp.sh ```

محتوای زیر را در آن قرار دهید:

```bash

  1. !/bin/bash
  2. test-smtp.sh — بررسی اتصال به پورت‌های میل‌سرور
  3. استفاده: ./test-smtp.sh [سرور] [لیست پورت‌ها]

SERVER="${1:-smtp.example.com}"

  1. پورت‌های استاندارد میل؛ می‌توانید با آرگومان دوم لیست سفارشی بدهید

PORTS="${2:-25 465 587 110 995 143 993}"

declare -A NAMES=(

 [25]="SMTP"
 [465]="SMTPS"
 [587]="Submission"
 [110]="POP3"
 [995]="POP3S"
 [143]="IMAP"
 [993]="IMAPS"

)

echo "=== Testing mail server: $SERVER ===" 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 ```

فایل را اجرایی کنید:

```bash chmod +x test-smtp.sh ```

      1. نحوه استفاده

```bash

  1. تست همهٔ پورت‌های استاندارد

./test-smtp.sh mail.example.com

  1. تست پورت‌های دلخواه (فقط SMTP)

./test-smtp.sh mail.example.com "25 465 587"

  1. اسکن یک بازهٔ پورت

./test-smtp.sh mail.example.com "$(seq 1 100)" ```

      1. خروجی نمونه

```

Testing mail server: mail.example.com

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 ```

> **نکته:** این اسکریپت فقط اتصال TCP را بررسی می‌کند و پروتکل (مثلاً پاسخ SMTP به `EHLO`) را تست نمی‌کند. برای تست کامل پروتکل از روش دوم (swaks) استفاده کنید.

> **هشدار:** در صورت بسته بودن پورت، وضعیت `CLOSED/FILTERED` نشان داده می‌شود. تفاوت بین «بسته» و «فیلترشده» با این روش قابل تشخیص نیست.

---

    1. روش دوم: ابزار swaks
    • swaks** (SMTP Swiss Army Knife) یک ابزار خط فرمان قدرتمند برای تست کامل و عیب‌یابی سرورهای SMTP است. با آن می‌توانید ایمیل تستی بفرستید، احراز هویت را بررسی کنید، TLS را تست کنید و جزئیات کامل گفتگو با سرور را ببینید.
      1. نصب

```bash sudo apt update sudo apt install swaks ```

بررسی نصب:

```bash swaks --version ```

      1. استفاده پایه

ساده‌ترین شکل — ارسال یک ایمیل تستی به سرور:

```bash swaks --to recipient@example.com --server mail.example.com ```

> **نکته:** در صورت عدم تعیین فرستنده، swaks به‌صورت پیش‌فرض از کاربر جاری سیستم استفاده می‌کند. با `--from` می‌توانید آن را مشخص کنید.

      1. مثال‌های پرکاربرد
    • ۱. ارسال ایمیل تستی کامل با احراز هویت و TLS (پورت ۵۸۷):**

```bash 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'

```

    • ۲. تست فقط اتصال و گفتگوی اولیه (بدون ارسال واقعی):**

```bash swaks --server mail.example.com --quit-after EHLO ```

    • ۳. نمایش جزئیات کامل گفتگو (مفید برای عیب‌یابی):**

```bash swaks --to test@example.com --server mail.example.com -v ```

    • ۴. تست سرور بدون رمزنگاری (پورت ۲۵):**

```bash swaks --to test@example.com --server mail.example.com --port 25 --protocol SMTP ```

    • ۵. تست SSL مستقیم (پورت ۴۶۵):**

```bash swaks --to test@example.com --server mail.example.com --port 465 --tls ```

    • ۶. ارسال ایمیل با محتوای سفارشی:**

```bash swaks \

 --to test@example.com \
 --server mail.example.com \
 --header "Subject: Test Mail" \
 --body "This is a test email sent by swaks."

```

      1. خروجی نمونه

``` === 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. ```

> **نکته:** کدهای پاسخ SMTP را بشناسید: `250` یعنی موفق، `550` یعنی گیرنده رد شد، `535` یعنی احراز هویت ناموفق، `554` یعنی تراکنش رد شد.

---

    1. مقایسه دو روش

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

    • پیشنهاد:** برای بررسی سریع باز بودن همهٔ پورت‌ها از `test-smtp.sh` و برای عیب‌یابی عمیق و تست ارسال واقعی از `swaks` استفاده کنید.

---

    1. عیب‌یابی

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

---

    1. منابع

- مستندات رسمی swaks: https://github.com/jetmore/swaks - راهنمای Ubuntu برای نصب پکیج‌ها: https://help.ubuntu.com/community/AptGet/Howto - صفحهٔ SMTP در ویکی‌پدیا: https://en.wikipedia.org/wiki/SMTP