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
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
# تست اتصال به میل‌سرور در Ubuntu
__TOC__


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


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


## فهرست مطالب
{{Note|این صفحه بخشی از مستندات ابزارهای خط فرمان است.}}


- [پیش‌نیازها](#پیش‌نیازها)
== پیش‌نیازها ==
- [روش اول: اسکریپت test-smtp.sh](#روش-اول-اسکریپت-test-smtpsh)
* سیستم‌عامل '''Ubuntu''' (نسخه ۲۰.۰۴ یا جدیدتر توصیه می‌شود)
  - [نصب](#نصب)
* دسترسی کاربر با مجوز <code>sudo</code>
  - [نحوه استفاده](#نحوه-استفاده)
* نام میزبان یا آدرس IP میل‌سرور مقصد
  - [خروجی نمونه](#خروجی-نمونه)
* باز بودن پورت‌های خروجی در فایروال سمت کلاینت (در صورت وجود)
- [روش دوم: ابزار swaks](#روش-دوم-ابزار-swaks)
  - [نصب](#نصب-1)
  - [استفاده پایه](#استفاده-پایه)
  - [مثال‌های پرکاربرد](#مثالهای-پرکاربرد)
- [مقایسه دو روش](#مقایسه-دو-روش)
- [عیب‌یابی](#عیبیابی)
- [منابع](#منابع)


---
{| class="wikitable" style="width:100%;"
|+ پورت‌های استاندارد میل
! پورت !! سرویس !! پروتکل !! رمزنگاری
|-
| ۲۵ || SMTP || ارسال || بدون رمزنگاری (یا STARTTLS)
|-
| ۴۶۵ || SMTPS || ارسال || SSL/TLS
|-
| ۵۸۷ || Submission || ارسال || STARTTLS
|-
| ۱۱۰ || POP3 || دریافت || بدون رمزنگاری
|-
| ۹۹۵ || POP3S || دریافت || SSL/TLS
|-
| ۱۴۳ || IMAP || دریافت || بدون رمزنگاری
|-
| ۹۹۳ || IMAPS || دریافت || SSL/TLS
|}


## پیش‌نیازها
== روش اول: اسکریپت test-smtp.sh ==
این اسکریپت با استفاده از قابلیت <code>/dev/tcp</code> هستهٔ Bash، اتصال TCP به همهٔ پورت‌های استاندارد میل‌سرور را بررسی می‌کند. آدرس IP دامنه نیز به‌صورت خودکار resolve و در خروجی نمایش داده می‌شود. '''نیاز به نصب هیچ ابزار اضافه‌ای ندارد.'''


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


| پورت | سرویس | پروتکل | رمزنگاری |
<syntaxhighlight lang="bash">
|------|-------|--------|----------|
| ۲۵ | SMTP | ارسال | بدون رمزنگاری (یا STARTTLS) |
| ۴۶۵ | SMTPS | ارسال | SSL/TLS |
| ۵۸۷ | Submission | ارسال | STARTTLS |
| ۱۱۰ | POP3 | دریافت | بدون رمزنگاری |
| ۹۹۵ | POP3S | دریافت | SSL/TLS |
| ۱۴۳ | IMAP | دریافت | بدون رمزنگاری |
| ۹۹۳ | IMAPS | دریافت | SSL/TLS |
 
---
 
## روش اول: اسکریپت test-smtp.sh
 
این اسکریپت با استفاده از قابلیت `/dev/tcp` هستهٔ Bash، اتصال TCP به همهٔ پورت‌های استاندارد میل‌سرور را بررسی می‌کند. **نیاز به نصب هیچ ابزار اضافه‌ای ندارد.**
 
### نصب
 
فایل را با نام `test-smtp.sh` ایجاد کنید:
 
```bash
nano test-smtp.sh
nano test-smtp.sh
```
</syntaxhighlight>


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


```bash
<syntaxhighlight lang="bash">
#!/bin/bash
#!/bin/bash
# test-smtp.sh — بررسی اتصال به پورت‌های میل‌سرور
# test-smtp.sh — بررسی اتصال به پورت‌های میل‌سرور
Line 66: Line 54:
# پورت‌های استاندارد میل؛ می‌توانید با آرگومان دوم لیست سفارشی بدهید
# پورت‌های استاندارد میل؛ می‌توانید با آرگومان دوم لیست سفارشی بدهید
PORTS="${2:-25 465 587 110 995 143 993}"
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=(
declare -A NAMES=(
Line 77: Line 69:
)
)


echo "=== Testing mail server: $SERVER ==="
echo "=== Testing mail server: $SERVER ($IP) ==="
echo "Port        Service          Status"
echo "Port        Service          Status"
echo "-----------------------------------"
echo "-----------------------------------"
Line 89: Line 81:
   printf "%-10s %-16s %s\n" "$PORT" "${NAMES[$PORT]:-Unknown}" "$STATUS"
   printf "%-10s %-16s %s\n" "$PORT" "${NAMES[$PORT]:-Unknown}" "$STATUS"
done
done
```
</syntaxhighlight>


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


```bash
<syntaxhighlight lang="bash">
chmod +x test-smtp.sh
chmod +x test-smtp.sh
```
</syntaxhighlight>


### نحوه استفاده
=== نحوه استفاده ===
 
<syntaxhighlight lang="bash">
```bash
# تست همهٔ پورت‌های استاندارد
# تست همهٔ پورت‌های استاندارد
./test-smtp.sh mail.example.com
./test-smtp.sh mail.example.com
Line 108: Line 99:
# اسکن یک بازهٔ پورت
# اسکن یک بازهٔ پورت
./test-smtp.sh mail.example.com "$(seq 1 100)"
./test-smtp.sh mail.example.com "$(seq 1 100)"
```
</syntaxhighlight>


### خروجی نمونه
=== خروجی نمونه ===
 
<pre>
```
=== Testing mail server: mail.example.com (192.0.2.10) ===
=== Testing mail server: mail.example.com ===
Port        Service          Status
Port        Service          Status
-----------------------------------
-----------------------------------
Line 123: Line 113:
143        IMAP            OPEN
143        IMAP            OPEN
993        IMAPS            OPEN
993        IMAPS            OPEN
```
</pre>
 
> **نکته:** این اسکریپت فقط اتصال TCP را بررسی می‌کند و پروتکل (مثلاً پاسخ SMTP به `EHLO`) را تست نمی‌کند. برای تست کامل پروتکل از روش دوم (swaks) استفاده کنید.
 
> **هشدار:** در صورت بسته بودن پورت، وضعیت `CLOSED/FILTERED` نشان داده می‌شود. تفاوت بین «بسته» و «فیلترشده» با این روش قابل تشخیص نیست.


---
{{Note|آدرس IP در پرانتز کنار نام سرور نمایش داده می‌شود. اگر resolve ناموفق باشد، عبارت <code>(resolve failed)</code> چاپ می‌شود.}}


## روش دوم: ابزار swaks
{{Note|این اسکریپت فقط اتصال TCP را بررسی می‌کند و پروتکل (مثلاً پاسخ SMTP به <code>EHLO</code>) را تست نمی‌کند. برای تست کامل پروتکل از روش دوم (swaks) استفاده کنید.}}


**swaks** (SMTP Swiss Army Knife) یک ابزار خط فرمان قدرتمند برای تست کامل و عیب‌یابی سرورهای SMTP است. با آن می‌توانید ایمیل تستی بفرستید، احراز هویت را بررسی کنید، TLS را تست کنید و جزئیات کامل گفتگو با سرور را ببینید.
{{Warning|در صورت بسته بودن پورت، وضعیت <code>CLOSED/FILTERED</code> نشان داده می‌شود. تفاوت بین «بسته» و «فیلترشده» با این روش قابل تشخیص نیست.}}


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


```bash
=== نصب ===
<syntaxhighlight lang="bash">
sudo apt update
sudo apt update
sudo apt install swaks
sudo apt install swaks
```
</syntaxhighlight>


بررسی نصب:
بررسی نصب:


```bash
<syntaxhighlight lang="bash">
swaks --version
swaks --version
```
</syntaxhighlight>
 
### استفاده پایه


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


```bash
<syntaxhighlight lang="bash">
swaks --to recipient@example.com --server mail.example.com
swaks --to recipient@example.com --server mail.example.com
```
</syntaxhighlight>


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


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


**۱. ارسال ایمیل تستی کامل با احراز هویت و TLS (پورت ۵۸۷):**
<syntaxhighlight lang="bash">
 
```bash
swaks \
swaks \
   --from sender@example.com \
   --from sender@example.com \
Line 172: Line 158:
   --auth-user sender@example.com \
   --auth-user sender@example.com \
   --auth-password 'YourPassword'
   --auth-password 'YourPassword'
```
</syntaxhighlight>


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


```bash
<syntaxhighlight lang="bash">
swaks --server mail.example.com --quit-after EHLO
swaks --server mail.example.com --quit-after EHLO
```
</syntaxhighlight>


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


```bash
<syntaxhighlight lang="bash">
swaks --to test@example.com --server mail.example.com -v
swaks --to test@example.com --server mail.example.com -v
```
</syntaxhighlight>


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


```bash
<syntaxhighlight lang="bash">
swaks --to test@example.com --server mail.example.com --port 25 --protocol SMTP
swaks --to test@example.com --server mail.example.com --port 25 --protocol SMTP
```
</syntaxhighlight>


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


```bash
<syntaxhighlight lang="bash">
swaks --to test@example.com --server mail.example.com --port 465 --tls
swaks --to test@example.com --server mail.example.com --port 465 --tls
```
</syntaxhighlight>


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


```bash
<syntaxhighlight lang="bash">
swaks \
swaks \
   --to test@example.com \
   --to test@example.com \
Line 206: Line 192:
   --header "Subject: Test Mail" \
   --header "Subject: Test Mail" \
   --body "This is a test email sent by swaks."
   --body "This is a test email sent by swaks."
```
</syntaxhighlight>


### خروجی نمونه
=== خروجی نمونه ===
 
<pre>
```
=== Trying mail.example.com:587...
=== Trying mail.example.com:587...
=== Connected to mail.example.com.
=== Connected to mail.example.com.
Line 228: Line 213:
<-  221 2.0.0 Bye
<-  221 2.0.0 Bye
=== Connection closed with remote host.
=== Connection closed with remote host.
```
</pre>
 
> **نکته:** کدهای پاسخ SMTP را بشناسید: `250` یعنی موفق، `550` یعنی گیرنده رد شد، `535` یعنی احراز هویت ناموفق، `554` یعنی تراکنش رد شد.
 
---
 
## مقایسه دو روش
 
| ویژگی | test-smtp.sh | swaks |
|-------|--------------|-------|
| نیاز به نصب | ❌ خیر | ✅ بله (`apt install swaks`) |
| تست اتصال TCP به چند پورت | ✅ بله | ⚠️ فقط یک پورت در هر بار |
| تست کامل پروتکل SMTP | ❌ خیر | ✅ بله |
| ارسال ایمیل واقعی | ❌ خیر | ✅ بله |
| تست احراز هویت (AUTH) | ❌ خیر | ✅ بله |
| تست TLS/STARTTLS | ❌ خیر | ✅ بله |
| خروجی جزئیات گفتگو | ❌ خیر | ✅ بله (`-v`) |
| مناسب برای | بررسی سریع باز بودن پورت‌ها | عیب‌یابی کامل و تست ارسال |
 
**پیشنهاد:** برای بررسی سریع باز بودن همهٔ پورت‌ها از `test-smtp.sh` و برای عیب‌یابی عمیق و تست ارسال واقعی از `swaks` استفاده کنید.
 
---


## عیب‌یابی
{{Note|کدهای پاسخ SMTP را بشناسید: <code>250</code> یعنی موفق، <code>550</code> یعنی گیرنده رد شد، <code>535</code> یعنی احراز هویت ناموفق، <code>554</code> یعنی تراکنش رد شد.}}


| مشکل | راه‌حل |
== مقایسه دو روش ==
|------|--------|
{| class="wikitable" style="width:100%;"
| همهٔ پورت‌ها CLOSED هستند | فایروال سمت سرور (مثلاً `ufw`) یا ISP را بررسی کنید: `sudo ufw status` |
! ویژگی !! test-smtp.sh !! swaks
| نام سرور resolve نمی‌شود | تست DNS: `dig mail.example.com` یا `nslookup mail.example.com` |
|-
| خطای احراز هویت (۵۳۵) | نام کاربری/رمز عبور را بررسی کنید؛ در Gmail باید از App Password استفاده کنید |
| نیاز به نصب || خیر || بله (<code>apt install swaks</code>)
| خطای TLS | مطمئن شوید پورت درست است؛ پورت ۴۶۵ برای SSL مستقیم و ۵۸۷ برای STARTTLS است |
|-
| پاسخ `550` هنگام ارسال | گیرنده یا دامنهٔ فرستنده تأیید نشده؛ SPF/DKIM سرور را بررسی کنید |
| تست اتصال TCP به چند پورت || بله || فقط یک پورت در هر بار
| `Connection timed out` | فایروال کلاینت یا سرور؛ دسترسی به پورت خروجی را تست کنید |
|-
| تست کامل پروتکل SMTP || خیر || بله
|-
| ارسال ایمیل واقعی || خیر || بله
|-
| تست احراز هویت (AUTH) || خیر || بله
|-
| تست TLS/STARTTLS || خیر || بله
|-
| خروجی جزئیات گفتگو || خیر || بله (<code>-v</code>)
|-
| مناسب برای || بررسی سریع باز بودن پورت‌ها || عیب‌یابی کامل و تست ارسال
|}


---
{{Tip|برای بررسی سریع باز بودن همهٔ پورت‌ها از <code>test-smtp.sh</code> و برای عیب‌یابی عمیق و تست ارسال واقعی از <code>swaks</code> استفاده کنید.}}


## منابع
== عیب‌یابی ==
{| class="wikitable" style="width:100%;"
! مشکل !! راه‌حل
|-
| همهٔ پورت‌ها CLOSED هستند || فایروال سمت سرور (مثلاً <code>ufw</code>) یا ISP را بررسی کنید: <code>sudo ufw status</code>
|-
| نام سرور resolve نمی‌شود || تست DNS: <code>dig mail.example.com</code> یا <code>nslookup mail.example.com</code>
|-
| خطای احراز هویت (۵۳۵) || نام کاربری/رمز عبور را بررسی کنید؛ در Gmail باید از App Password استفاده کنید
|-
| خطای TLS || مطمئن شوید پورت درست است؛ پورت ۴۶۵ برای SSL مستقیم و ۵۸۷ برای STARTTLS است
|-
| پاسخ <code>550</code> هنگام ارسال || گیرنده یا دامنهٔ فرستنده تأیید نشده؛ SPF/DKIM سرور را بررسی کنید
|-
| <code>Connection timed out</code> || فایروال کلاینت یا سرور؛ دسترسی به پورت خروجی را تست کنید
|}


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

Latest revision as of 11:54, 16 August 2026

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

منابع