ماذا تفعل هذه الوحدة #
أشياء كثيرة على الخادم تُشعِرك بالبريد: شهادة على وشك الانتهاء، أو قرص يمتلئ، أو تقرير مهمة ليلية. لكن الخادم المثبَّت حديثًا لا يعرف كيف يرسل ذلك البريد — أو يحاول تسليمه مباشرةً فينتهي في مجلد السخام، إن لم يُرفَض تمامًا.
تحلّ وحدة smtp ذلك بتهيئة البريد الصادر للمضيف مقابل smarthost (مُرحِّل مخوَّل فعلًا بالتسليم: Amazon SES، أو خادم بريد مؤسسي، أو مزوّدك…). تضبط postfix كي يُمرِّر كل بريد النظام إلى ذلك الـ smarthost، وتخزّن كلمة المرور بأمان، وتعيد كتابة المُرسِل ليكون صالحًا، وتتيح لك اختبار الإرسال للتأكّد من وصوله — مع الإبلاغ عن الخطأ الفعلي إن فشل شيء.
جهّز تفاصيل الـ smarthost لديك: المضيف، والمنفذ (عادةً 587)، وبيانات الاعتماد إن تطلّب استيثاقًا. لا تُمرَّر كلمة المرور في سطر الأوامر: تُقرأ من stdin أو من مخزن الأسرار، فلا تهبط في سجلّ أوامرك أبدًا.
المهام الشائعة #
اختر ما تريد فعله. تأتي كل وصفة بالأمر مكتوبًا بالفعل — ما عليك إلا استبدال الـ smarthost والمُرسِل بخاصّتك والضغط على نسخ.
1
هيّئ مُرحِّل البريد
وجِّه الخادم إلى الـ smarthost لديك كي يخرج البريد فعلًا.
اتصل عبر SSH بخادمك بالمستخدم ubuntu.
نفّذ الأمر بتفاصيل الـ smarthost لديك. تُطلَب كلمة المرور عبر stdin، فلا تهبط في سجلّ أوامرك أبدًا:
$ sudo imaxe smtp configure \
--host email-smtp.eu-west-1.amazonaws.com \
--user AKIAIOSFODNN7EXAMPLE \
--from [email protected]إن كان الـ smarthost لديك لا يتطلّب استيثاقًا، فأسقِط --user. ولمنفذ مختلف أو وضع TLS مختلف، أضِف --port أو --no-tls.
[email protected]. تابِع مع وصفة إرسال بريد اختباري.2
أرسِل بريدًا اختباريًّا
تأكّد من خروج رسالة ووصولها قبل أن تعتمد على التنبيهات.
أرسِل بريدًا اختباريًّا إلى عنوان يمكنك مراجعته:
$ sudo imaxe smtp test --to [email protected]إن أسقطت --to، يُرسَل إلى المُرسِل المُهيّأ. راجِع صندوق وارِدك (ومجلد السخام) للتأكّد من التسليم.
3
اعرض حالة البريد
تحقّق بنظرة واحدة مما إذا كان المُرحِّل مهيّأً ومُفعَّلًا.
ملخّص للمُرحِّل، والـ smarthost، والمُرسِل، وحالة الـ MTA:
$ sudo imaxe smtp statusتحتاجه لسكربت أو لوحة؟ أضِف --json للحصول على مخرجات مقروءة آليًّا:
$ sudo imaxe smtp status --json4
اعرض الإعداد الساري
راجِع الإعدادات المُفعَّلة دون كشف كلمة المرور.
يعرض المضيف والمنفذ والمستخدم والمُرسِل ووضع TLS المُستخدَم فعلًا (لا تُطبَع كلمة المرور أبدًا):
$ sudo imaxe smtp show5
أزِل المُرحِّل
عطِّل التمرير وأعِد postfix إلى حالته السابقة.
عطِّل مُرحِّل البريد الصادر واستعِد إعداد postfix الأساسي:
$ sudo imaxe smtp removeconfigure.السبب الأشيع أن المُرسِل غير موثَّق على الـ smarthost (يتطلّب SES توثيق النطاق أو عنوان --from)، أو أن بيانات الاعتماد خاطئة. نفّذ imaxe smtp test: فهو يعيد خطأ الـ MTA الفعلي كي تعرف بالضبط ما تضبطه.
صيغة الاستخدام #
imaxe smtp <subcomando> [--host HOST] [--from CORREO] [flags]تتطلّب جميع الأوامر الفرعية صلاحيات root (استخدم sudo) لأنها تمسّ إعداد postfix وتكتب في /etc/imaxe/ وتعيد تحميل خدمات النظام. لا تُمرَّر كلمة مرور الـ smarthost راية أبدًا: تُقرأ من stdin أو من مخزن الأسرار. أضِف --json إلى status أو show للحصول على مخرجات مقروءة آليًّا صالحة لكتابة السكربتات.
الأوامر الفرعية #
| الأمر الفرعي | ماذا يفعل | الرايات المعنية |
|---|---|---|
| configure | يهيّئ مُرحِّل البريد الصادر مقابل smarthost. تُقرأ كلمة المرور من الأسرار/stdin. | --host, --port, --user, --from, --tls / --no-tls |
| test | يرسِل بريدًا اختباريًّا ويُبلِغ عن خطأ الـ MTA الفعلي إن فشل. | --to |
| status | الحالة: المُرحِّل مهيّأ، الـ smarthost، المُرسِل والـ MTA مُفعَّل. | --json |
| show | يعرض الإعداد الساري، دون كشف كلمة المرور. | --json |
| remove | يعطّل المُرحِّل ويستعيد postfix. | — |
الوسائط والرايات #
| الراية | النوع | الافتراضي | الوصف |
|---|---|---|---|
| --host مطلوب | string | — | الـ smarthost عبر SMTP الذي يُمرَّر إليه البريد (مثلًا email-smtp.eu-west-1.amazonaws.com). مطلوب لـ configure. |
| --port | int | 587 | منفذ SMTP للـ smarthost. |
| --user | string | — | مستخدم SMTP للاستيثاق. إن أُسقِط، يُهيّأ المُرحِّل دون استيثاق. |
| --from | string | — | يعيد كتابة مُرسِل كل الرسائل (sender_canonical). مفيد لاستخدام عنوان موثَّق على الـ smarthost. |
| --tls / --no-tls | bool | --tls | يفرض TLS على الاتصال بالـ smarthost (الافتراضي). --no-tls يعطّله. |
| --to | string | remitente | في test: مُستلِم البريد الاختباري. الافتراضي هو المُرسِل المُهيّأ. |
| --json | bool | false | في status/show، يُصدر النتيجة بصيغة JSON في stdout. |
لا يوجد خيار --password. تُقرأ بيانات الاعتماد من stdin أثناء configure أو من مخزن الأسرار (password_secret، وهو smtp افتراضيًّا)، فلا تظهر في سجلّ أوامرك ولا في جدول العمليات.
الملفات والمسارات #
| المسار | المحتوى |
|---|---|
| /etc/imaxe/smtp.yml | إعداد الوحدة: المضيف، المنفذ، TLS، المستخدم، المُرسِل ومرجع إلى سرّ كلمة المرور. |
| /etc/postfix/main.cf | إعداد postfix الذي تضبطه الوحدة للتمرير (relayhost، sender canonical…). |
| /var/log/mail.log | سجلّ postfix بكل محاولة تسليم وسبب الرفض. |
مثال على smtp.yml:
enabled: true
host: email-smtp.eu-west-1.amazonaws.com
port: 587
tls: true
username: AKIAIOSFODNN7EXAMPLE
from: [email protected]
password_secret: smtpرموز الخروج والسجلّات #
يعيد كل تنفيذ رمزًا يمكنك فحصه بـ echo $? — مفيد للتسلسل في السكربتات:
test، قُبِل البريد للتسليم.تابِع سجلّ البريد مباشرةً أثناء تصحيح إرسال:
$ sudo tail -f /var/log/mail.log
$ sudo imaxe smtp test --to [email protected]حل المشكلات #
| العَرَض | السبب المحتمل | الحل |
|---|---|---|
| يعيد AUTH (الرمز 4) | مستخدم أو كلمة مرور الـ smarthost خاطئة. | تحقّق من --user ونفّذ configure من جديد، مُعيدًا إدخال كلمة المرور عبر stdin. |
| يعيد SEND (الرمز 5)، رُفِض المُرسِل | عنوان --from غير موثَّق على الـ smarthost (شائع مع SES). | وثِّق النطاق أو العنوان لدى المزوّد وأعِد الـ test. |
| يعيد CONFIG (الرمز 3) | لم يُهيّأ المُرحِّل على هذا المضيف بعد. | نفّذ imaxe smtp configure بتفاصيل الـ smarthost لديك. |
| يخرج البريد لكنه يهبط في السخام | محاذاة SPF/DKIM مفقودة على نطاق المُرسِل. | هيّئ سجلّات مزوّد البريد لنطاق --from. |
هل واجهتك مشكلة مع وحدة البريد؟
راسلنا مرفقًا مخرجات «imaxe <module> status --json» وسنرد عليك بسرعة.