[{"data":1,"prerenderedAt":203},["ShallowReactive",2],{"seo-verification":3,"blog-mailpit-بديل-mailhog-لاختبار-البريد-على-vps-ma-ar":6,"promo-bar-likely":196},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-mailpit-بديل-mailhog-لاختبار-البريد-على-vps-ma-ar",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":33,"intro":36,"sections":37,"ctaTitle":144,"ctaBody":145,"ctaButton":146,"ctaUrl":147,"relatedPosts":148},288,"mailpit-بديل-mailhog-لاختبار-البريد-على-vps",{"fr":12,"en":13,"ar":10,"es":14},"self-host-mailpit-vps","mailpit-self-hosted-smtp-testing-server-on-your-vps","mailpit-servidor-smtp-de-pruebas-vps","Mailpit: خادم SMTP للاختبار على VPS الخاص بك","نشر Mailpit على VPS الخاص بك لاعتراض رسائل الاختبار وفحصها. دليل شامل: Docker Compose، الوكيل العكسي، CI\u002FCD مع Laravel وDjango وn8n، واستكشاف الأخطاء.",8,0,false,"2026-01-14T00:00:00+00:00","2026-10-14T23:33:30+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},7,"الاستضافة الذاتية","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fself-host-mailpit-vps-poster.svg",{"categorySlug":34,"appSlug":35},"التطوير","mailpit","‏Mailpit يحل محل MailHog كمرجع لخوادم SMTP للاختبار ذاتية الاستضافة: ملف تنفيذي واحد، واجهة حديثة، واجهة برمجية متوافقة مع MailHog، وأقل من 50 ميغابايت من ذاكرة الوصول العشوائي في وضع الخمول. يغطي هذا الدليل النشر الكامل على VPS — ‏Docker Compose، الوكيل العكسي ‏Nginx، تكامل CI\u002FCD وتأمين الوصول الشبكي.",[38,42,52,55,74,77,92,95,99,102,141],{"type":39,"title":40,"body":41},"h2","لماذا الانتقال من MailHog إلى Mailpit","‏MailHog لم يعد مُصانًا منذ أواخر عام 2022. يتراكم فيه تبعيات قديمة، وواجهته تعود إلى السنوات الأولى من ‏Bootstrap، ولم تتطور واجهته البرمجية قط. يعالج ‏Mailpit كل هذه النقاط: يخضع لتطوير نشط (أحدث إصدار في 2024)، ويوفر واجهة تفاعلية في الوقت الفعلي، ويكشف واجهة برمجية ‏REST متوافقة مع MailHog لتجنب كسر النصوص البرمجية الحالية.\n\nلا تتطلب عملية الانتقال أي ترحيل بيانات: لا يحتفظ ‏Mailpit بأي شيء افتراضيًا. كل إعادة تشغيل تبدأ بصندوق بريد فارغ، وهو بالضبط السلوك المطلوب في خط أنابيب الاختبار.",{"type":43,"title":44,"items":45},"ul","ما يقدمه Mailpit عمليًا",[46,47,48,49,50,51],"واجهة حديثة مع البحث في النص الكامل، وعرض HTML\u002Fنص، ومعاينة الهاتف المحمول، وفحص الرؤوس","ملف تنفيذي ‏Go منفرد مُجمَّع بشكل ثابت — لا تبعيات للنظام، يعمل في حاوية بحجم 20 ميغابايت","استهلاك الذاكرة أقل من 50 ميغابايت في وضع الخمول، مستقر حتى مع آلاف الرسائل في الجلسة","‏REST API متوافقة مع MailHog (‏`\u002Fapi\u002Fv1\u002Fmessages`، `\u002Fapi\u002Fv1\u002Fsearch`) للنصوص البرمجية الحالية","دعم ‏SMTP المُصادق عليه، و‏TLS اختياري، والتحكم في الوصول عبر الشبكة","‏Webhook قابل للتكوين لإبلاغ نقطة نهاية خارجية عند كل استقبال بريد إلكتروني",{"type":39,"title":53,"body":54},"المتطلبات الأساسية","يكفي ‏VPS يعمل بـ ‏Debian 12 أو ‏Ubuntu 22.04\u002F24.04 مع **Docker وDocker Compose v2** مثبتَين. يُعد ‏Mailpit من أخف الأدوات في الكتالوج: خطط لـ 1 ‏vCPU مشترك و256 ميغابايت من ذاكرة الوصول العشوائي للاستخدام في التطوير أو ‏CI. يُوصى باستخدام نطاق فرعي مخصص (`mail.your-domain.com`) للوصول إلى الواجهة من المتصفح عبر ‏HTTPS.\n\nالمنافذ المستخدمة: **1025** (‏SMTP) و**8025** (واجهة الويب). إذا كان خدمة بريد إلكتروني تعمل بالفعل على المنفذ 1025، ستحتاج إلى تغيير منفذ ‏Mailpit (انظر قسم استكشاف الأخطاء).",{"type":56,"title":57,"steps":58},"steps","نشر Mailpit في 5 خطوات",[59,62,65,68,71],{"title":60,"body":61},"إنشاء الدليل وملف Compose","```bash\nmkdir -p \u002Fopt\u002Fmailpit && cd \u002Fopt\u002Fmailpit\n```\n\nأنشئ ملف `docker-compose‎.yml` التالي:\n\n```yaml\nservices:\n  mailpit:\n    image: axllent\u002Fmailpit:latest\n    container_name: mailpit\n    restart: unless-stopped\n    ports:\n      - \"127.0.0.1:1025:1025\"\n      - \"127.0.0.1:8025:8025\"\n    environment:\n      MP_MAX_MESSAGES: 500\n      MP_SMTP_AUTH_ACCEPT_ANY: \"true\"\n      MP_SMTP_AUTH_ALLOW_INSECURE: \"true\"\n      MP_UI_AUTH: \"admin:changeme\"\n    volumes:\n      - mailpit_data:\u002Fdata\nvolumes:\n  mailpit_data:\n```\n\nالمنافذ مرتبطة بـ `127.0.0.1` فقط: لا يُكشف ‏Mailpit مباشرة على ‏IP العام. المتغير `MP_UI_AUTH` يفعّل مصادقة ‏HTTP الأساسية على واجهة الويب — غيّر كلمة المرور. `MP_MAX_MESSAGES` يحد من عدد الرسائل المحفوظة في الذاكرة لكل جلسة.",{"title":63,"body":64},"تشغيل الحاوية","```bash\ndocker compose up -d\ndocker compose logs -f mailpit\n```\n\nالسطر `starting on [::]:1025` يؤكد أن خادم ‏SMTP يستمع. تحقق من ربط المنافذ بـ ‏localhost:\n\n```bash\nss -tlnp | grep -E '1025|8025'\n```\n\nالمتوقع: `127.0.0.1:1025` و`127.0.0.1:8025` فقط — ليس `0.0.0.0` أبدًا.",{"title":66,"body":67},"تكوين الوكيل العكسي Nginx","أنشئ `\u002Fetc\u002Fnginx\u002Fsites-available\u002Fmailpit`:\n\n```nginx\nserver {\n    listen 443 ssl;\n    server_name mail.your-domain.com;\n\n    ssl_certificate     \u002Fetc\u002Fletsencrypt\u002Flive\u002Fmail.your-domain.com\u002Ffullchain.pem;\n    ssl_certificate_key \u002Fetc\u002Fletsencrypt\u002Flive\u002Fmail.your-domain.com\u002Fprivkey.pem;\n\n    location \u002F {\n        proxy_pass         http:\u002F\u002F127.0.0.1:8025;\n        proxy_http_version 1.1;\n        proxy_set_header   Upgrade $http_upgrade;\n        proxy_set_header   Connection \"upgrade\";\n        proxy_set_header   Host $host;\n        proxy_read_timeout 86400;\n    }\n}\n```\n\n`proxy_read_timeout 86400` ضروري لاتصالات ‏WebSocket المستخدمة من قبل الواجهة الفورية. فعّل ‏vhost وأعد تحميل ‏Nginx:\n\n```bash\nln -s \u002Fetc\u002Fnginx\u002Fsites-available\u002Fmailpit \u002Fetc\u002Fnginx\u002Fsites-enabled\u002F\nnginx -t && systemctl reload nginx\n```\n\naحصل على شهادة ‏Let's Encrypt إذا لم يكن ذلك مكتملًا:\n\n```bash\ncertbot --nginx -d mail.your-domain.com\n```",{"title":69,"body":70},"اختبار الإرسال باستخدام curl","تحقق من استقبال خادم ‏SMTP للرسالة:\n\n```bash\ncurl --url 'smtp:\u002F\u002F127.0.0.1:1025' \\\n  --mail-from 'test@example.com' \\\n  --mail-rcpt 'dest@example.com' \\\n  --upload-file - \u003C\u003CEOF\nFrom: test@example.com\nTo: dest@example.com\nSubject: Mailpit Test\n\nTest message body.\nEOF\n```\n\nافتح بعد ذلك `https:\u002F\u002Fmail‎.your-domain‎.com` في متصفحك. يجب أن تظهر الرسالة في الواجهة. إذا قمت بتكوين `MP_UI_AUTH`، أدخل بيانات الاعتماد عند مطالبة المصادقة الأساسية.",{"title":72,"body":73},"تكوين تطبيقك للإشارة إلى Mailpit","في ملف `.env` (‏Laravel، ‏Symfony، ‏n8n، ‏Django…)، استبدل تكوين ‏SMTP بـ:\n\n```\nMAIL_HOST=127.0.0.1\nMAIL_PORT=1025\nMAIL_ENCRYPTION=null\nMAIL_USERNAME=null\nMAIL_PASSWORD=null\n```\n\nللتطبيقات التي تعمل في ‏Docker على المضيف نفسه، استخدم اسم شبكة ‏Docker أو ‏IP للبوابة (`172.17.0.1` افتراضيًا) بدلاً من `127.0.0.1`.",{"type":39,"title":75,"body":76},"Mailpit في CI\u002FCD: اختبار البريد الإلكتروني في خط الأنابيب","في بيئات ‏CI، يتكامل ‏Mailpit كخدمة مرافقة. يبدأ في ثوانٍ ولا يحتاج إلى تكوين خارجي.",{"type":56,"title":78,"steps":79},"تكامل CI\u002FCD حسب إطار العمل",[80,83,86,89],{"title":81,"body":82},"GitHub Actions — خدمة Mailpit","```yaml\nservices:\n  mailpit:\n    image: axllent\u002Fmailpit:latest\n    ports:\n      - 1025:1025\n      - 8025:8025\n```\n\nفي متغيرات بيئة مهمتك، عيّن `MAIL_HOST=127.0.0.1` و`MAIL_PORT=1025`. يقبل ‏Mailpit أي بريد إلكتروني بدون مصادقة افتراضيًا — لا حاجة لتكوين ‏SMTP إضافي.",{"title":84,"body":85},"Laravel — PHPUnit","في `phpunit.xml`، استبدل وسيلة النقل بـ ‏SMTP:\n\n```xml\n\u003Cenv name=\"MAIL_MAILER\" value=\"smtp\"\u002F>\n\u003Cenv name=\"MAIL_HOST\" value=\"127.0.0.1\"\u002F>\n\u003Cenv name=\"MAIL_PORT\" value=\"1025\"\u002F>\n```\n\nفي اختبارك، أرسل البريد ثم استعلم ‏API ‏Mailpit للتحقق من الاستقبال:\n\n```php\n$response = Http::get('http:\u002F\u002F127.0.0.1:8025\u002Fapi\u002Fv1\u002Fmessages');\n$this->assertSame($response->json('total'), 1);\n$this->assertStringContainsString(\n    'Welcome',\n    $response->json('messages.0.Subject')\n);\n```",{"title":87,"body":88},"Django — pytest","في `settings.py` (أو `settings_test.py`):\n\n```python\nEMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'\nEMAIL_HOST = '127.0.0.1'\nEMAIL_PORT = 1025\n```\n\nفي اختبار ‏pytest الخاص بك، تحقق عبر ‏API ‏Mailpit:\n\n```python\nimport requests\n\ndef test_welcome_email_sent():\n    r = requests.get('http:\u002F\u002F127.0.0.1:8025\u002Fapi\u002Fv1\u002Fmessages')\n    assert r.json()['total'] == 1\n    assert 'Welcome' in r.json()['messages'][0]['Subject']\n```",{"title":90,"body":91},"n8n — اختبار سير العمل","في عقدة **Send Email** في ‏n8n، قم بتكوين خادم ‏SMTP على `127.0.0.1:1025` بدون مصادقة. للتحقق تلقائيًا من أن سير العمل قد أطلق إرسالاً، استدع `GET http:\u002F\u002F127.0.0.1:8025\u002Fapi\u002Fv1\u002Fmessages` من عقدة ‏HTTP Request وتحقق من الإجمالي في عقدة ‏IF.",{"type":39,"title":93,"body":94},"تأمين الوصول إلى Mailpit","يحتفظ ‏Mailpit بالبريد الإلكتروني **في الذاكرة فقط** — لا ملفات على القرص، ولا قاعدة بيانات. هذه ميزة للسرية (لا آثار مستمرة)، ولكنها أيضًا قيد: إعادة التشغيل تفرغ صندوق البريد دون تحذير.\n\n**تقييد الشبكة.** المنافذ 1025 و8025 مرتبطة بـ `127.0.0.1` في تكوين ‏Docker Compose أعلاه. لا تعرضهما أبدًا على `0.0.0.0` في الإنتاج أو على خادم مشترك.\n\n**مصادقة HTTP الأساسية على الواجهة.** المتغير `MP_UI_AUTH=user:password` يفعّل مصادقة أساسية على واجهة الويب. استخدم كلمة مرور قوية — الواجهة تكشف المحتوى الكامل لرسائل الاختبار.\n\n**SMTP المُصادق عليه.** للبيئات متعددة الفرق، فعّل `MP_SMTP_AUTH` مع ملف حسابات بدلاً من `MP_SMTP_AUTH_ACCEPT_ANY`.",{"type":96,"title":97,"body":98},"tip","نصيحة: إفراغ صندوق البريد بين الاختبارات","‏API ‏Mailpit تكشف نقطة نهاية للمسح: `DELETE http:\u002F\u002F127.0.0.1:8025\u002Fapi\u002Fv1\u002Fmessages`. استدعها في `setUp()` الخاص بـ ‏PHPUnit أو أداة الاختبار في ‏pytest لبدء كل اختبار بصندوق بريد فارغ، دون الحاجة إلى إعادة تشغيل الحاوية.",{"type":39,"title":100,"body":101},"استكشاف الأخطاء — 4 حالات شائعة","**المنفذ 1025 مشغول بالفعل.** قد يكون خادم ‏Postfix أو ‏Sendmail محليًا يستمع على هذا المنفذ. تحقق بـ `ss -tlnp | grep 1025`. إذا كان الأمر كذلك، غيّر المنفذ الرئيسي في `docker-compose.yml` (مثل `1026:1025`) وحدّث `MAIL_PORT` في تطبيقاتك.\n\n**رفض الوصول من حاوية CI.** حاويات ‏Docker في ‏GitHub Actions يمكنها الوصول إلى `127.0.0.1` للمشغّل، ولكن ليس إلى الخدمات الأخرى عبر `localhost` إذا لم تكن الشبكة مشتركة بشكل صحيح. استخدم شبكة `host` للمشغّل أو أشر إلى الخدمة باسمها (`mailpit:1025`) في ملف سير العمل.\n\n**الواجهة غير قابلة للوصول خلف الوكيل العكسي.** يمكن أن تُقطع اتصالات ‏WebSocket للواجهة الفورية بسبب مهلة ‏Nginx قصيرة. تحقق من أن `proxy_read_timeout` مضبوط على 86400.\n\n**الأداء مع آلاف الرسائل.** يحتفظ ‏Mailpit بكل شيء في الذاكرة. إذا أنتج خط أنابيبك مئات الرسائل لكل تشغيل، اضبط `MP_MAX_MESSAGES` على قيمة معقولة (100-500).",{"type":103,"title":104,"headers":105,"rows":112},"comparison","Mailpit مقابل MailHog وMailtrap وInbucket وsmtp4dev",[106,107,108,109,110,111],"الأداة","الصيانة","RAM في الخمول","REST API","الاستمرارية","مصادقة SMTP",[113,120,126,133,137],[114,115,116,117,118,119],"**Mailpit**","نشط (2024)","أقل من 50 ميغابايت","نعم (v1 + v2)","الذاكرة فقط","اختياري",[121,122,123,124,118,125],"MailHog","متوقف (2022)","~30 ميغابايت","نعم (v1 فقط)","لا",[127,128,129,130,131,132],"Mailtrap (SaaS)","نشط","غير متاح (سحابة)","نعم","السحابة (30 يومًا)","نعم (سحابة)",[134,128,135,130,136,125],"Inbucket","~20 ميغابايت","الذاكرة أو القرص",[138,128,139,130,140,125],"smtp4dev","~80 ميغابايت (‎.NET)","SQLite اختياري",{"type":39,"title":142,"body":143},"حالات الاستخدام المتقدمة","**الاعتراض متعدد المشاريع.** يمكن لمثيل ‏Mailpit واحد استقبال رسائل البريد الإلكتروني من مشاريع متعددة في وقت واحد. استخدم البحث في النص الكامل أو الفلترة حسب المستلم في الواجهة لعزل الرسائل من كل تطبيق.\n\n**Webhook إلى Slack أو n8n.** المتغير `MP_WEBHOOK_URL` يطلق ‏JSON POST عند كل استقبال. اربطه بسير عمل ‏n8n لتوجيه رسائل الاختبار إلى قناة ‏Slack للفريق.\n\n**التصدير وإعادة التشغيل.** تكشف ‏API الرسائل بتنسيق ‏EML (`GET \u002Fapi\u002Fv1\u002Fmessage\u002F\u003Cid>.eml`). نزّل رسالة معترضة لإعادة تشغيلها في عميل بريد حقيقي أو للاحتفاظ بها كأداة اختبار.\n\n**Mailpit في مجموعة تطوير كاملة.** أضف ‏Mailpit كخدمة في `docker-compose.yml` الرئيسي لمشروعك. يتكامل بشكل طبيعي مع ‏Laravel Sail وSymfony Docker وn8n ذاتي الاستضافة — أمر `docker compose up` واحد يشغّل بيئة التطوير بأكملها مع اعتراض ‏SMTP.","انشر Mailpit بنقرة واحدة على ServOrbit","مع VPS ServOrbit Cloud، يتوفر Mailpit مباشرة في المتجر. أعدّ بيئة اختبار SMTP في دقيقتين دون خادم منفصل.","إطلاق VPS السحابي","\u002Fvps-cloud",[149,169,186],{"id":150,"slug":151,"slugs":152,"title":156,"excerpt":157,"readTime":17,"views":158,"isPinned":19,"noindex":19,"publishedAt":159,"updatedAt":160,"category":161,"categories":166,"featuredImage":30,"bgImage":31,"posterImage":168,"relatedSolution":30},280,"إعداد-postfix-smtp-relay-على-vps-لبريد-المواقع",{"fr":153,"en":154,"ar":151,"es":155},"smtp-relay-vps-emails-transactionnels-clients","postfix-smtp-relay-on-vps-client-transactional-emails","relay-smtp-postfix-en-vps-emails-transaccionales","إعداد Postfix SMTP relay على VPS لبريد المواقع","أعدّ Postfix كـ relay بريد على VPS من ServOrbit: IPv4 مخصصة وSPF وDKIM وDMARC لجميع مواقع عملائك في أقل من ساعة.",1,"2026-08-18T00:00:00+00:00","2026-11-09T20:55:12+00:00",{"id":162,"name":163,"slug":164,"color":165,"icon":164},11,"البريد الإلكتروني الاحترافي","emails","bg-cyan-500\u002F10 text-cyan-400",[167],{"id":162,"name":163,"slug":164,"color":165,"icon":164},"\u002Fblog\u002Fcovers\u002Fsmtp-relay-vps-emails-transactionnels-clients-poster.svg",{"id":170,"slug":171,"slugs":172,"title":176,"excerpt":177,"readTime":178,"views":179,"isPinned":19,"noindex":19,"publishedAt":180,"updatedAt":181,"category":182,"categories":183,"featuredImage":30,"bgImage":31,"posterImage":185,"relatedSolution":30},238,"استضافة-خادم-البريد-الإلكتروني-على-vps-باستخدام-mailcow",{"fr":173,"en":174,"ar":171,"es":175},"heberger-serveur-email-vps-mailcow","hosting-your-own-email-server-on-a-vps-with-mailcow","alojar-servidor-correo-vps-mailcow","استضافة خادم البريد الإلكتروني على VPS باستخدام Mailcow","دليل شامل لنشر ‎Mailcow‎ على خادم VPS يعمل بنظام Linux: التثبيت خطوة بخطوة، إعداد قابلية التسليم، والترحيل من Google Workspace وMicrosoft 365.",20,3,"2026-08-08T00:00:00+00:00","2026-10-29T03:10:23+00:00",{"id":162,"name":163,"slug":164,"color":165,"icon":164},[184],{"id":162,"name":163,"slug":164,"color":165,"icon":164},"\u002Fblog\u002Fcovers\u002Fheberger-serveur-email-vps-mailcow-poster.svg",{"id":187,"slug":188,"slugs":189,"title":193,"excerpt":194,"readTime":195,"views":18,"isPinned":19,"noindex":196,"publishedAt":197,"updatedAt":198,"category":199,"categories":200,"featuredImage":30,"bgImage":31,"posterImage":202,"relatedSolution":30},199,"spf-وdkim-وdmarc-تجاوز-عتبة-5000-رسالة",{"fr":190,"en":191,"ar":188,"es":192},"spf-dkim-dmarc-delivrabilite-emails-pro","spf-dkim-dmarc-passing-the-5000-email-threshold","spf-dkim-dmarc-superar-el-umbral-de-5000-correos","SPF وDKIM وDMARC: تجاوز عتبة 5,000 رسالة","يرفض Gmail وOutlook المُرسِلين بدون SPF وDKIM وDMARC متوافق برمز SMTP 550. إليك كيفية ضبط السجلات الثلاثة.",4,true,"2026-08-01T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":162,"name":163,"slug":164,"color":165,"icon":164},[201],{"id":162,"name":163,"slug":164,"color":165,"icon":164},"\u002Fblog\u002Fcovers\u002Fspf-dkim-dmarc-delivrabilite-emails-pro-poster.svg",1794270341378]