Mail Server Test ubuntu: Difference between revisions

From wiki karavi
Jump to navigation Jump to search
(Created page with "# تست اتصال به میل‌سرور در Ubuntu > **این صفحه بخشی از مستندات ابزارهای خط فرمان است.** دو روش برای تست اتصال به میل‌سرور (SMTP/IMAP/POP3) در Ubuntu توضیح داده شده است: > ۱. اسکریپت سبک **test-smtp.sh** (بدون نیاز به نصب ابزار اضافه) > ۲. ابزار قدرتمند **swaks** (SMTP Swiss Army Knife) --- ## فهرست مطالب - [...")
 
No edit summary
Line 4: Line 4:
> ۱. اسکریپت سبک **test-smtp.sh** (بدون نیاز به نصب ابزار اضافه)
> ۱. اسکریپت سبک **test-smtp.sh** (بدون نیاز به نصب ابزار اضافه)
> ۲. ابزار قدرتمند **swaks** (SMTP Swiss Army Knife)
> ۲. ابزار قدرتمند **swaks** (SMTP Swiss Army Knife)
---
## فهرست مطالب
- [پیش‌نیازها](#پیش‌نیازها)
- [روش اول: اسکریپت test-smtp.sh](#روش-اول-اسکریپت-test-smtpsh)
  - [نصب](#نصب)
  - [نحوه استفاده](#نحوه-استفاده)
  - [خروجی نمونه](#خروجی-نمونه)
- [روش دوم: ابزار swaks](#روش-دوم-ابزار-swaks)
  - [نصب](#نصب-1)
  - [استفاده پایه](#استفاده-پایه)
  - [مثال‌های پرکاربرد](#مثالهای-پرکاربرد)
- [مقایسه دو روش](#مقایسه-دو-روش)
- [عیب‌یابی](#عیبیابی)
- [منابع](#منابع)


---
---
Line 31: Line 14:
- باز بودن پورت‌های خروجی در فایروال سمت کلاینت (در صورت وجود)
- باز بودن پورت‌های خروجی در فایروال سمت کلاینت (در صورت وجود)


| پورت | سرویس | پروتکل | رمزنگاری |
<table style="border-collapse:collapse; width:100%">
|------|-------|--------|----------|
  <tr>
| ۲۵ | SMTP | ارسال | بدون رمزنگاری (یا STARTTLS) |
    <th style="border:1px solid #999; padding:6px 10px; background:#f0f0f0">پورت</th>
| ۴۶۵ | SMTPS | ارسال | SSL/TLS |
    <th style="border:1px solid #999; padding:6px 10px; background:#f0f0f0">سرویس</th>
| ۵۸۷ | Submission | ارسال | STARTTLS |
    <th style="border:1px solid #999; padding:6px 10px; background:#f0f0f0">پروتکل</th>
| ۱۱۰ | POP3 | دریافت | بدون رمزنگاری |
    <th style="border:1px solid #999; padding:6px 10px; background:#f0f0f0">رمزنگاری</th>
| ۹۹۵ | POP3S | دریافت | SSL/TLS |
  </tr>
| ۱۴۳ | IMAP | دریافت | بدون رمزنگاری |
  <tr><td style="border:1px solid #999; padding:6px 10px">۲۵</td><td style="border:1px solid #999; padding:6px 10px">SMTP</td><td style="border:1px solid #999; padding:6px 10px">ارسال</td><td style="border:1px solid #999; padding:6px 10px">بدون رمزنگاری (یا STARTTLS)</td></tr>
| ۹۹۳ | IMAPS | دریافت | SSL/TLS |
  <tr><td style="border:1px solid #999; padding:6px 10px">۴۶۵</td><td style="border:1px solid #999; padding:6px 10px">SMTPS</td><td style="border:1px solid #999; padding:6px 10px">ارسال</td><td style="border:1px solid #999; padding:6px 10px">SSL/TLS</td></tr>
  <tr><td style="border:1px solid #999; padding:6px 10px">۵۸۷</td><td style="border:1px solid #999; padding:6px 10px">Submission</td><td style="border:1px solid #999; padding:6px 10px">ارسال</td><td style="border:1px solid #999; padding:6px 10px">STARTTLS</td></tr>
  <tr><td style="border:1px solid #999; padding:6px 10px">۱۱۰</td><td style="border:1px solid #999; padding:6px 10px">POP3</td><td style="border:1px solid #999; padding:6px 10px">دریافت</td><td style="border:1px solid #999; padding:6px 10px">بدون رمزنگاری</td></tr>
  <tr><td style="border:1px solid #999; padding:6px 10px">۹۹۵</td><td style="border:1px solid #999; padding:6px 10px">POP3S</td><td style="border:1px solid #999; padding:6px 10px">دریافت</td><td style="border:1px solid #999; padding:6px 10px">SSL/TLS</td></tr>
  <tr><td style="border:1px solid #999; padding:6px 10px">۱۴۳</td><td style="border:1px solid #999; padding:6px 10px">IMAP</td><td style="border:1px solid #999; padding:6px 10px">دریافت</td><td style="border:1px solid #999; padding:6px 10px">بدون رمزنگاری</td></tr>
  <tr><td style="border:1px solid #999; padding:6px 10px">۹۹۳</td><td style="border:1px solid #999; padding:6px 10px">IMAPS</td><td style="border:1px solid #999; padding:6px 10px">دریافت</td><td style="border:1px solid #999; padding:6px 10px">SSL/TLS</td></tr>
</table>


---
---
Line 236: Line 225:
## مقایسه دو روش
## مقایسه دو روش


| ویژگی | test-smtp.sh | swaks |
<table style="border-collapse:collapse; width:100%">
|-------|--------------|-------|
  <tr>
| نیاز به نصب | ❌ خیر | ✅ بله (`apt install swaks`) |
    <th style="border:1px solid #999; padding:6px 10px; background:#f0f0f0">ویژگی</th>
| تست اتصال TCP به چند پورت | ✅ بله | ⚠️ فقط یک پورت در هر بار |
    <th style="border:1px solid #999; padding:6px 10px; background:#f0f0f0">test-smtp.sh</th>
| تست کامل پروتکل SMTP | ❌ خیر | ✅ بله |
    <th style="border:1px solid #999; padding:6px 10px; background:#f0f0f0">swaks</th>
| ارسال ایمیل واقعی | ❌ خیر | ✅ بله |
  </tr>
| تست احراز هویت (AUTH) | ❌ خیر | ✅ بله |
  <tr><td style="border:1px solid #999; padding:6px 10px">نیاز به نصب</td><td style="border:1px solid #999; padding:6px 10px">خیر</td><td style="border:1px solid #999; padding:6px 10px">بله (<code>apt install swaks</code>)</td></tr>
| تست TLS/STARTTLS | ❌ خیر | ✅ بله |
  <tr><td style="border:1px solid #999; padding:6px 10px">تست اتصال TCP به چند پورت</td><td style="border:1px solid #999; padding:6px 10px">بله</td><td style="border:1px solid #999; padding:6px 10px">فقط یک پورت در هر بار</td></tr>
| خروجی جزئیات گفتگو | ❌ خیر | ✅ بله (`-v`) |
  <tr><td style="border:1px solid #999; padding:6px 10px">تست کامل پروتکل SMTP</td><td style="border:1px solid #999; padding:6px 10px">خیر</td><td style="border:1px solid #999; padding:6px 10px">بله</td></tr>
| مناسب برای | بررسی سریع باز بودن پورت‌ها | عیب‌یابی کامل و تست ارسال |
  <tr><td style="border:1px solid #999; padding:6px 10px">ارسال ایمیل واقعی</td><td style="border:1px solid #999; padding:6px 10px">خیر</td><td style="border:1px solid #999; padding:6px 10px">بله</td></tr>
  <tr><td style="border:1px solid #999; padding:6px 10px">تست احراز هویت (AUTH)</td><td style="border:1px solid #999; padding:6px 10px">خیر</td><td style="border:1px solid #999; padding:6px 10px">بله</td></tr>
  <tr><td style="border:1px solid #999; padding:6px 10px">تست TLS/STARTTLS</td><td style="border:1px solid #999; padding:6px 10px">خیر</td><td style="border:1px solid #999; padding:6px 10px">بله</td></tr>
  <tr><td style="border:1px solid #999; padding:6px 10px">خروجی جزئیات گفتگو</td><td style="border:1px solid #999; padding:6px 10px">خیر</td><td style="border:1px solid #999; padding:6px 10px">بله (<code>-v</code>)</td></tr>
  <tr><td style="border:1px solid #999; padding:6px 10px">مناسب برای</td><td style="border:1px solid #999; padding:6px 10px">بررسی سریع باز بودن پورت‌ها</td><td style="border:1px solid #999; padding:6px 10px">عیب‌یابی کامل و تست ارسال</td></tr>
</table>


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


| مشکل | راه‌حل |
<table style="border-collapse:collapse; width:100%">
|------|--------|
  <tr>
| همهٔ پورت‌ها CLOSED هستند | فایروال سمت سرور (مثلاً `ufw`) یا ISP را بررسی کنید: `sudo ufw status` |
    <th style="border:1px solid #999; padding:6px 10px; background:#f0f0f0">مشکل</th>
| نام سرور resolve نمی‌شود | تست DNS: `dig mail.example.com` یا `nslookup mail.example.com` |
    <th style="border:1px solid #999; padding:6px 10px; background:#f0f0f0">راه‌حل</th>
| خطای احراز هویت (۵۳۵) | نام کاربری/رمز عبور را بررسی کنید؛ در Gmail باید از App Password استفاده کنید |
  </tr>
| خطای TLS | مطمئن شوید پورت درست است؛ پورت ۴۶۵ برای SSL مستقیم و ۵۸۷ برای STARTTLS است |
  <tr><td style="border:1px solid #999; padding:6px 10px">همهٔ پورت‌ها CLOSED هستند</td><td style="border:1px solid #999; padding:6px 10px">فایروال سمت سرور (مثلاً <code>ufw</code>) یا ISP را بررسی کنید: <code>sudo ufw status</code></td></tr>
| پاسخ `550` هنگام ارسال | گیرنده یا دامنهٔ فرستنده تأیید نشده؛ SPF/DKIM سرور را بررسی کنید |
  <tr><td style="border:1px solid #999; padding:6px 10px">نام سرور resolve نمی‌شود</td><td style="border:1px solid #999; padding:6px 10px">تست DNS: <code>dig mail.example.com</code> یا <code>nslookup mail.example.com</code></td></tr>
| `Connection timed out` | فایروال کلاینت یا سرور؛ دسترسی به پورت خروجی را تست کنید |
  <tr><td style="border:1px solid #999; padding:6px 10px">خطای احراز هویت (۵۳۵)</td><td style="border:1px solid #999; padding:6px 10px">نام کاربری/رمز عبور را بررسی کنید؛ در Gmail باید از App Password استفاده کنید</td></tr>
  <tr><td style="border:1px solid #999; padding:6px 10px">خطای TLS</td><td style="border:1px solid #999; padding:6px 10px">مطمئن شوید پورت درست است؛ پورت ۴۶۵ برای SSL مستقیم و ۵۸۷ برای STARTTLS است</td></tr>
  <tr><td style="border:1px solid #999; padding:6px 10px">پاسخ <code>550</code> هنگام ارسال</td><td style="border:1px solid #999; padding:6px 10px">گیرنده یا دامنهٔ فرستنده تأیید نشده؛ SPF/DKIM سرور را بررسی کنید</td></tr>
  <tr><td style="border:1px solid #999; padding:6px 10px"><code>Connection timed out</code></td><td style="border:1px solid #999; padding:6px 10px">فایروال کلاینت یا سرور؛ دسترسی به پورت خروجی را تست کنید</td></tr>
</table>


---
---

Revision as of 11:42, 16 August 2026

  1. تست اتصال به میل‌سرور در Ubuntu

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

---

    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