Mail Server Test ubuntu: Difference between revisions
(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) | ||
--- | --- | ||
| Line 31: | Line 14: | ||
- باز بودن پورتهای خروجی در فایروال سمت کلاینت (در صورت وجود) | - باز بودن پورتهای خروجی در فایروال سمت کلاینت (در صورت وجود) | ||
<table style="border-collapse:collapse; width:100%"> | |||
<tr> | |||
<th style="border:1px solid #999; padding:6px 10px; background:#f0f0f0">پورت</th> | |||
<th style="border:1px solid #999; padding:6px 10px; background:#f0f0f0">سرویس</th> | |||
<th style="border:1px solid #999; padding:6px 10px; background:#f0f0f0">پروتکل</th> | |||
<th style="border:1px solid #999; padding:6px 10px; background:#f0f0f0">رمزنگاری</th> | |||
</tr> | |||
<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> | |||
<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: | ||
## مقایسه دو روش | ## مقایسه دو روش | ||
<table style="border-collapse:collapse; width:100%"> | |||
<tr> | |||
<th style="border:1px solid #999; padding:6px 10px; background:#f0f0f0">ویژگی</th> | |||
<th style="border:1px solid #999; padding:6px 10px; background:#f0f0f0">test-smtp.sh</th> | |||
<th style="border:1px solid #999; padding:6px 10px; background:#f0f0f0">swaks</th> | |||
</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>apt install swaks</code>)</td></tr> | |||
<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> | |||
<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> | |||
<th style="border:1px solid #999; padding:6px 10px; background:#f0f0f0">مشکل</th> | |||
<th style="border:1px solid #999; padding:6px 10px; background:#f0f0f0">راهحل</th> | |||
</tr> | |||
<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> | |||
<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> | |||
<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
- تست اتصال به میلسرور در 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 به همهٔ پورتهای استاندارد میلسرور را بررسی میکند. **نیاز به نصب هیچ ابزار اضافهای ندارد.**
- نصب
فایل را با نام `test-smtp.sh` ایجاد کنید:
```bash nano test-smtp.sh ```
محتوای زیر را در آن قرار دهید:
```bash
- !/bin/bash
- test-smtp.sh — بررسی اتصال به پورتهای میلسرور
- استفاده: ./test-smtp.sh [سرور] [لیست پورتها]
SERVER="${1:-smtp.example.com}"
- پورتهای استاندارد میل؛ میتوانید با آرگومان دوم لیست سفارشی بدهید
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 ```
- نحوه استفاده
```bash
- تست همهٔ پورتهای استاندارد
./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
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` نشان داده میشود. تفاوت بین «بسته» و «فیلترشده» با این روش قابل تشخیص نیست.
---
- روش دوم: ابزار swaks
- swaks** (SMTP Swiss Army Knife) یک ابزار خط فرمان قدرتمند برای تست کامل و عیبیابی سرورهای SMTP است. با آن میتوانید ایمیل تستی بفرستید، احراز هویت را بررسی کنید، TLS را تست کنید و جزئیات کامل گفتگو با سرور را ببینید.
- نصب
```bash sudo apt update sudo apt install swaks ```
بررسی نصب:
```bash swaks --version ```
- استفاده پایه
سادهترین شکل — ارسال یک ایمیل تستی به سرور:
```bash swaks --to recipient@example.com --server mail.example.com ```
> **نکته:** در صورت عدم تعیین فرستنده، swaks بهصورت پیشفرض از کاربر جاری سیستم استفاده میکند. با `--from` میتوانید آن را مشخص کنید.
- مثالهای پرکاربرد
- ۱. ارسال ایمیل تستی کامل با احراز هویت و 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."
```
- خروجی نمونه
``` === 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` یعنی تراکنش رد شد.
---
- مقایسه دو روش
| ویژگی | test-smtp.sh | swaks |
|---|---|---|
| نیاز به نصب | خیر | بله (apt install swaks) |
| تست اتصال TCP به چند پورت | بله | فقط یک پورت در هر بار |
| تست کامل پروتکل SMTP | خیر | بله |
| ارسال ایمیل واقعی | خیر | بله |
| تست احراز هویت (AUTH) | خیر | بله |
| تست TLS/STARTTLS | خیر | بله |
| خروجی جزئیات گفتگو | خیر | بله (-v) |
| مناسب برای | بررسی سریع باز بودن پورتها | عیبیابی کامل و تست ارسال |
- پیشنهاد:** برای بررسی سریع باز بودن همهٔ پورتها از `test-smtp.sh` و برای عیبیابی عمیق و تست ارسال واقعی از `swaks` استفاده کنید.
---
- عیبیابی
| مشکل | راهحل |
|---|---|
| همهٔ پورتها 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 | فایروال کلاینت یا سرور؛ دسترسی به پورت خروجی را تست کنید |
---
- منابع
- مستندات رسمی swaks: https://github.com/jetmore/swaks - راهنمای Ubuntu برای نصب پکیجها: https://help.ubuntu.com/community/AptGet/Howto - صفحهٔ SMTP در ویکیپدیا: https://en.wikipedia.org/wiki/SMTP