خادم بريد إلكتروني OpenBSD باستخدام OpenSMTPD و Dovecot و Rspamd و RainLoop

المقدمة

يوضح هذا البرنامج التعليمي خادم بريد إلكتروني كامل الميزات يعمل على OpenBSD باستخدام OpenSMTPD و Dovecot و Rspamd و RainLoop. OpenSMTPD هو خادم البريد الافتراضي لـ OpenBSD. اختر نسخة Vultr Compute Cloud مع الكثير من مساحة التخزين للعدد المتوقع من المستخدمين.

خطوات أولية

قم بإعداد حساب المستخدم الخاص بك لأداء المهام كجذر.

su -
usermod -G wheel <username>
echo "permit nopass keepenv :wheel" > /etc/doas.conf
exit

قم بإعداد مستودع الحزمة لـ OpenBSD.

doas su
echo "https://cdn.openbsd.org/pub/OpenBSD" > /etc/installurl
exit

أضف الحزم المطلوبة.

doas pkg_add opensmtpd-extras opensmtpd-filter-rspamd dovecot dovecot-pigeonhole rspamd redis

تكوين OpenSMTPD

بشكل افتراضي ، يستمع OpenSMTPD فقط على المضيف المحلي. يجب تكوينه صراحة للاستماع على واجهات خارجية. يجب تكوينه لاستخدام المستخدمين الظاهريين بدلاً من مستخدمي النظام للأمان.

قم /etc/smtpd.confبعمل نسخة احتياطية من الملف الافتراضي وقم بإنشاء ملف جديد من البداية.

cd /etc/mail
mv smtpd.conf smtpd.conf.default

قم بإنشاء جديد smtpd.confكما هو موضح أدناه. استبدال example.comالمجال الخاص بك. لا يؤدي هذا التكوين الأولي إلى تنشيط مرشح rspamd أثناء اختبار OpenSMTP. سيتم تنشيط مرشح البريد العشوائي لاحقًا.

pki "mail" cert "/etc/ssl/mail.crt"
pki "mail" key "/etc/ssl/private/mail.key"

table aliases file:/etc/mail/aliases
table credentials passwd:/etc/mail/credentials
table virtuals file:/etc/mail/virtuals

filter "rspamd" proc-exec "/usr/local/libexec/smtpd/filter-rspamd"

# To accept external mail, replace with: listen on all

# listen on all tls pki "mail" hostname "mail.example.com"
listen on egress port submission tls-require pki "mail" hostname "mail.example.com" \
  auth <credentials>

action "local_mail" mbox alias <aliases>
action "domain_mail" maildir "/var/vmail/example.com/%{dest.user}" \
  virtual <virtuals>
action "outbound" relay

# Uncomment the following to accept external mail for domain "example.org"

# match from any for domain "example.com" action "domain_mail"
match from local for local action "local_mail"

match from local for any action "outbound"
match auth from any for any action "outbound"

قم بإنشاء ملف / etc / اعتماد

يمكن لـ OpenSMTPD و Dovecot مشاركة قاعدة بيانات المصادقة. تشبه قاعدة البيانات هذه ملف كلمة مرور النظام بتنسيق ، مع حقلين إضافيين لـ Dovecot. يحدد الحقلين الخاصين الدليل الرئيسي الظاهري وموقع البريد. كلمات المرور في شكل السمكة المنتفخة. ينشئ هذا البرنامج التعليمي ثلاثة أمثلة للمستخدمين.

قم بإنشاء كلمات المرور وربطها /etc/mail/credentialsبالملف.

doas su
smtpctl encrypt example_password1 >> /etc/mail/credentials
smtpctl encrypt example_password2 >> /etc/mail/credentials
smtpctl encrypt example_password3 >> /etc/mail/credentials
exit

يبدو الإخراج مشابهًا لما يلي:

$2b$10$agmNBPvFm1zqCjbbZC3JbO4Ns2jJNZQfTS45MAnKi.IPrkKITyTa6
$2b$10$LwkcKVVnwG8hDxu2W4YKD.K0kQ2oylOmQ9SBUb0hIopBsmNxYPb4e
$2b$10$bgLW/GMZyRXKbROgRQIvRu4xbeOqOJJXlgEAKuS5sIrBvfdPvEzeq

تحرير /etc/mail/credentialsلإضافة الحقول المطلوبة. يتم تعيين كل سطر إلى حساب نظام ، vmail ، مع UID و GID لعام 2000 . استبدل example.com بنطاقك. اسم المستخدم الافتراضي هو عنوان البريد الإلكتروني الكامل.

[email protected]:$2b$10$agmNBPvFm1zqCjbbZC3JbO4Ns2jJNZQfTS45MAnKi.IPrkKITyTa6:vmail:2000:2000:/var/vmail/example.com/john::userdb_mail=maildir:/var/vmail/example.com/john
[email protected]:$2b$10$LwkcKVVnwG8hDxu2W4YKD.K0kQ2oylOmQ9SBUb0hIopBsmNxYPb4e:vmail:2000:2000:/var/vmail/example.com/adam::userdb_mail=maildir:/var/vmail/example.com/adam
[email protected]:$2b$10$bgLW/GMZyRXKbROgRQIvRu4xbeOqOJJXlgEAKuS5sIrBvfdPvEzeq:vmail:2000:2000:/var/vmail/example.com/natalie::userdb_mail=maildir:/var/vmail/example.com/natalie

إنشاء حساب بريد افتراضي وتعيين الأمان

  • تعيين /etc/mail/credentialsأذونات للقراءة فقط ل _smtpdو _dovecotمستخدمي النظام.
  • قم بإنشاء دليل vmailمستخدم النظام والمجموعة والمنزل.

    • عند إنشاء مستخدم نظام vmail، ستتلقى التحذير التالي: useradd: Warning: home directory '/var/vmail' doesn't exist, and -m was not specified. هذا أمر متوقع. هذا يتجنب ازدحام الدليل بالملفات النقطية من /etc/skel. ليست مطلوبة لأن حساب vmail لا يسمح بتسجيل الدخول.

      doas chmod 0440 / etc / mail / بيانات الاعتماد doas chown smtpd: dovecot / etc / mail / بيانات الاعتماد doas useradd -c "حساب البريد الافتراضي" -d / var / vmail -s / sbin nologin -u 2000 -g = uid -L staff vmail doas mkdir / var / vmail doas vmail: vmail / var / vmail

قم بإنشاء تعيين المستخدم الظاهري

إنشاء /etc/mail/virtualsلتحديد عناوين البريد الإلكتروني الصالحة.

إنشاء مفاتيح عامة / خاصة لـ OpenSMTPD

يستخدم هذا المثال شهادة موقعة ذاتيا. استخدم شهادة موقعة صالحة إذا كان لديك واحدة. عند المطالبة بالاسم الشائع ، تأكد من أنه يطابق FQDN للخادم. يستخدم هذا المثال mail.example.com.

doas su
cd /etc/ssl
openssl genrsa -out private/mail.key 4096
openssl req -x509 -new -nodes -key private/mail.key -out mail.crt -days 3650 -sha256
chmod 0400 /etc/ssl/private/mail.key
exit

اختبر الخادم

استخدم مدقق بنية تكوين OpenSMTPD. إذا لم يتم العثور على مشاكل ، أعد تشغيل البرنامج الخفي smtpd.

doas smtpd -n
doas rcctl restart smtpd

من حساب بريد خارجي ، أرسل بريدًا إلكترونيًا تجريبيًا إلى أحد المستخدمين.

  • سيقوم OpenSMTPD بإنشاء بنية مجلد maildir أدناه /var/vmailوتسليم البريد إلى /var/vmail/example.com/<username>/new.
  • باسم المستخدم الجذر، تصفح لهذا الموقع وverifiy لديك ملف باسم مشابهة لهذه: 1576339842.4d64757b.example.com:2,.
  • راجع محتويات الملف ، بما في ذلك جميع رؤوس البريد ، للتحقق من عمل تسليم البريد الإلكتروني بشكل صحيح.

    Return-Path: <n0244e80da3-54b1ed125c5342fc-adam===example.org@bounce.example.org>
    Delivered-To: [email protected]
    Received: from spruce-goose-ba.twitter.com (spruce-goose-ba.twitter.com [199.59.150.96])
        by mail.example.com (OpenSMTPD) with ESMTPS id 75b514d3 (TLSv1.2:ECDHE-RSA-AES256-GCM-    SHA384:256:NO)
        for <[email protected]>;
        Sat, 14 Dec 2019 11:10:40 -0500 (EST)
    DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=twitter.com;
        s=dkim-201406; t=1576339839;
        bh=jhKB5/w9v87GaXSuizT576ntJ/72gvLRDhsqmGQQrCE=;
        h=Date:From:To:Subject:MIME-Version:Content-Type:List-Unsubscribe:
        Message-ID;
        b=TWn/QVUJ1VDlWiweWoanwHLABCL1nqmm0+TBzh3PjmYNm0quRMXB7QL2ykzHGME5A
        DTz/JFHa0cOvQsrdhxxbjOLFKimK0nF+Ou5kI+2HzTzfVNZS0qGnTVP/tZyaIsWjjl
        an5EiR6HFOHG4iClOOEOJW4oLDEZfPTefrlW+378bmHGIRUNDvVKrbXKunL9fJFAb3
        JSrhWQNwbrF/aARFzw4nKfb1I7vTRSrN1eXE5JxzGwI2XAjqDIWdR5ExwUNbJH5ZPs
        wQ85j8KLZEEgQkbH9CypgeUMJWsVK95FqOCCaqKMS10M7intGMb3aeiiFcB7yDHi9t
        u7rVESm4eGp/g==
    X-MSFBL: DM7pSZns+YDRgNEmGNre9aPjZTtc1tDlN97w5rQDBts=|eyJ1IjoibWF0dEBnb2J
        sYWNrY2F0LmNvbUBpaWQjIzU0YjFlZDEyNWM1MzQyZmNiNThiMzVmNzI0NDZlMGF
        mQHVzYiMjNkAyNDRAMTA4MjgwNTAxMDYzNzk1MDk3NkAwQDA4MjY5ZWI4OTI3YzR
        kNTFiNTZkMjY3YzY2OGRmN2IwY2Y4M2ExZGIiLCJyIjoibWF0dEBnb2JsYWNrY2F
        0LmNvbSIsImciOiJCdWxrIiwiYiI6InNtZjEtYmd4LTM0LXNyMS1CdWxrLjE4NiJ
        9
    Date: Sat, 14 Dec 2019 16:10:39 +0000
    ...
    

هيئ Dovecot IMAP

قم بتعيين فئة تسجيل الدخول

تتطلب Dovecot القدرة على الحصول على عدد أكبر من الملفات المفتوحة للقراءة والكتابة مما يسمح به الفصل الافتراضي. سيؤدي عدم القيام بذلك إلى حدوث أخطاء يصعب استكشافها وإصلاحها.

حدد فئة تسجيل الدخول لبرنامج Dovecot. في الجزء السفلي من /etc/login.confإضافة الأسطر التالية.

    dovecot:\
        :openfiles-cur=1024:\
        :openfiles-max=2048:\
        :tc=daemon:    

قم بإنشاء ملف تكوين Dovecot

إنشاء /etc/dovecot/local.conf.

auth_mechanisms = plain
first_valid_uid = 2000
first_valid_gid = 2000
mail_location = maildir:/var/vmail/%d/%n
mail_plugin_dir = /usr/local/lib/dovecot
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex  imap4flags copy include variables body enotify environment mailbox date index ihave duplicate mime foreverypart extracttext imapsieve vnd.dovecot.imapsieve
mbox_write_locks = fcntl
mmap_disable = yes
namespace inbox {
  inbox = yes
  location =
  mailbox Archive {
  auto = subscribe
  special_use = \Archive
  }
  mailbox Drafts {
  auto = subscribe
  special_use = \Drafts
  }
  mailbox Junk {
  auto = subscribe
  special_use = \Junk
  }
  mailbox Sent {
  auto = subscribe
  special_use = \Sent
  }
  mailbox Trash {
  auto = subscribe
  special_use = \Trash
  }
  prefix =
}
passdb {
  args = scheme=CRYPT username_format=%u /etc/mail/credentials
  driver = passwd-file
  name =
}
plugin {
  imapsieve_mailbox1_before = file:/usr/local/lib/dovecot/sieve/report-spam.sieve
  imapsieve_mailbox1_causes = COPY
  imapsieve_mailbox1_name = Junk
  imapsieve_mailbox2_before = file:/usr/local/lib/dovecot/sieve/report-ham.sieve
  imapsieve_mailbox2_causes = COPY
  imapsieve_mailbox2_from = Junk
  imapsieve_mailbox2_name = *
  sieve = file:~/sieve;active=~/.dovecot.sieve
  sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.environment
  sieve_pipe_bin_dir = /usr/local/lib/dovecot/sieve
  sieve_plugins = sieve_imapsieve sieve_extprograms
}
protocols = imap sieve
service imap-login {
  inet_listener imaps {
  port = 0
  }
}
service managesieve-login {
  inet_listener sieve {
  port = 4190
  }
  inet_listener sieve_deprecated {
  port = 2000
  }
}
ssl_cert = </etc/ssl/mail.crt
ssl_key = </etc/ssl/private/mail.key
userdb {
  args = username_format=%u /etc/mail/credentials
  driver = passwd-file
  name =
}
protocol imap {
  mail_plugins = " imap_sieve"
}

إصلاح خطأ Dovecot

هناك خطأ في برج الحمام حيث ssl_certو ssl_keyالإعدادات لا يحصل تجاوز في local.confملف لذلك علينا أن تعلق بها. إذا فاتتك هذه الخطوة ، ستفشل Dovecot في البدء بشكل صحيح.

تحرير /etc/dovecot/conf.d/10-ssl.confكما هو موضح.

...
# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
# dropping root privileges, so keep the key file unreadable by anyone but
# root. Included doc/mkcert.sh can be used to easily generate self-signed
# certificate, just make sure to update the domains in dovecot-openssl.cnf
#ssl_cert = </etc/ssl/dovecotcert.pem
#ssl_key = </etc/ssl/private/dovecot.pem
...

إنشاء مخطوطات المنخل

مخطوطات غربال تدريب Rspamd على البريد المزعج و لحم الخنزير . يؤدي نقل البريد الإلكتروني إلى مجلد البريد غير الهام والخروج منه إلى تشغيل حدث لتدريب Rspamd.

توجد هذه الملفات في /usr/local/lib/dovecot/sieve.

قم بإنشاء report-ham.sieveالملف.

require ["vnd.dovecot.pipe", "copy", "imapsieve", "environment", "variables"];

if environment :matches "imap.mailbox" "*" {
  set "mailbox" "${1}";
}

if string "${mailbox}" "Trash" {
  stop;
}

if environment :matches "imap.user" "*" {
  set "username" "${1}";
}

pipe :copy "sa-learn-ham.sh" [ "${username}" ];

قم بإنشاء report-spam.sieveالملف.

require ["vnd.dovecot.pipe", "copy", "imapsieve", "environment", "variables"];

if environment :matches "imap.user" "*" {
  set "username" "${1}";
}

pipe :copy "sa-learn-spam.sh" [ "${username}" ];

تجميع الملفات.

sievec report-ham.sieve
sievec report-spam.sieve 

إنشاء نصين قذيفة التاليين في /usr/local/lib/dovecot/sieve

أضف ما يلي إلى sa-learn-ham.sh

#!/bin/sh
exec /usr/local/bin/rspamc -d "${1}" learn_ham

أضف ما يلي إلى sa-learn-spam.sh

#!/bin/sh
exec /usr/local/bin/rspamc -d "${1}" learn_spam

اجعل الملفات قابلة للتنفيذ.

chmod 0755 sa-learn-ham.sh
chmod 0755 sa-learn-spam.sh

تمكين وبدء Dovecot.

rcctl enable dovecot
rcctl start dovecot

تحقق من أن Dovecot بدأ بشكل صحيح.

ps ax | grep dovecot

88005 ??  I        0:00.11 /usr/local/sbin/dovecot
69640 ??  I        0:00.03 dovecot/anvil
91207 ??  I        0:00.03 dovecot/log
98178 ??  I        0:00.19 dovecot/config
34712 ??  I        0:00.06 dovecot/stats
96674 ??  I        0:00.03 dovecot/imap-login
 8891 ??  S        0:00.02 dovecot/imap

تحقق من قراءة Dovecot بشكل صحيح /etc/mail/credentials

doveadm user [email protected]

field    value
uid      2000
gid      2000
home /var/vmail/example.com/john
mail maildir:/var/vmail/example.com/john

تحقق من أن مستخدم البريد يمكنه تسجيل الدخول.

doveadm auth login [email protected]

Password: ********
passdb: [email protected] auth succeeded
extra fields:
  [email protected]

userdb extra fields:
  [email protected]
  mail=maildir:/var/vmail/example.com/john
  uid=2000
  gid=2000
  home=/var/vmail/example.com/john
  auth_mech=PLAIN

قم بإعداد Rspamd

هذا هو تكوين Rspamd الأساسي ، ارجع إلى الوثائق الرسمية لمزيد من التفاصيل. ينشئ هذا المثال تعريفًا لنطاقنا لتمكين توقيع DKIM.

إنشاء زوج مفاتيح عام / خاص في /etc/mail/dkimوتعيين الأذونات الصحيحة.

doas su
mkdir /etc/mail/dkim
cd /etc/mail/dkim
openssl genrsa -out private.key 1024
openssl rsa -in private.key -pubout -out public.key
chmod 0440 private.key
chown root:_rspamd private.key

أنشئ سجل DNS لـ DKIM يحتوي على المفتاح العام. راجع مزود DNS الخاص بك للحصول على تفاصيل حول كيفية إنشاء سجل DKIM. انسخ المحتويات /etc/mail/dkim/public.keyوالصقها بعد p=الجزء من سجل DKIM كما هو موضح أدناه. لاحظ أن هذا المثال ينشئ أيضًا سجل نظام التعرف على هوية المرسل (SPF).

default._domainkey.example.com. IN TXT "v=DKIM1;k=rsa;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQClcuK3FV3Ug64li8iFsuJ2ykgb7FMZsujk9uG79ppPUp57vCfjzO7F+HBfx5qIwvlGxv2IJXK86FZwhpUX+HFCDUtfB2z0ZNGerWcZfNzM1w1Bru/fdMd2tCYkiHEa5RWIkLfs/Fm+neXxRZfAG2UDWmAghNbgzYv7xViwgufDIQIDAQAB"
example.com. IN TXT "v=spf1 a ip4:192.0.2.1 mx ~all"

أنشئ سجل DMARC.

_dmarc.example.com. IN TXT "v=DMARC1;p=none;pct=100;rua=mailto:[email protected]"

قم /etc/rspamd/local.d/dkim_signing.confبإنشاء ملف التكوين.

  • و selector="default";يتم اشتقاق خط من الجزء الأول من السجل DKIM DNS ( default._domainkey....) تم إنشاؤها أعلاه.

    domain {
        example.com {
            path = "/etc/mail/dkim/example.com.key";
            selector = "default";
        }
    }
    

تمكين وبدء Rspamd.

doas rcctl enable redis rspamd
doas rcctl start redis rspamd

قم بتغيير الأسطر أدناه /etc/mail/smtpd.confوأعد تشغيل OpenSMTPD لتمكين Rspamd.

...
listen on all tls pki "mail" hostname "mail.example.com" filter "rspamd"
listen on egress port submission tls-require pki "mail" hostname "mail.example.com" \
  auth <credentials> filter "rspamd"
...
rcctl restart smtpd

اختبر خادم البريد باستخدام برنامج البريد الإلكتروني POP3 أو IMAP. إذا كنت لا تحتاج إلى بريد الويب ، فتوقف هنا.

(اختياري) قم بتكوين RainLoop Webmail

قم بتثبيت حزم المتطلبات المسبقة

عند المطالبة ، يرجى اختيار أحدث إصدار من PHP.

pkg_add php php-curl php-pdo_sqlite php-zip pecl73-mcrypt zip unzip wget curl

إحضار البريد الإلكتروني RainLoop tarball واستخراجه إلى /var/www/htdocs/.

استخدم الإصدار القياسي الذي يتضمن أداة تحديث تلقائية.

cd /tmp
wget https://www.rainloop.net/repository/webmail/rainloop-latest.zip
unzip rainloop-latest.zip -d /var/www/htdocs/rainloop
chown -R www:www /var/www/htdocs

إنشاء دعونا تشفير شهادة SSL

  • نسخ /etc/examples/acme-client.confإلى/etc
  • أضف الأسطر التالية في أسفل الملف:

    domain webmail.example.com {
    domain key "/etc/ssl/private/webmail.example.com.key"
    domain full chain certificate "/etc/ssl/webmail.example.com.crt"
    sign with letsencrypt
    }
    

تكوين httpd

  • قم بإنشاء إدخال DNS (إما سجل CNAME أو A) للنطاق الفرعي webmail.example.com
  • تحرير /etc/httpd.confباتباع المثال أدناه.

    prefork 3
    types { include "/usr/share/misc/mime.types" }
    
    server "default" {
        listen on egress port 80 
        root "/htdocs"
        directory index index.html
    
        location "/.well-known/acme-challenge/*" {
                root "/acme"
                request strip 2
        }
    }
    

قم بتشغيل تدقيق بناء الجملة httpd.

httpd -n

تمكين وبدء httpd.

rcctl enable httpd
rcctl start httpd

اطلب شهادة Let's Encrypt.

acme-client -v webmail.example.com

أضف تعريفات الخادم لـ RainLoop إلى /etc/httpd.conf

server "webmail.example.com" {
    listen on egress port 80
    block return 302 "https://$SERVER_NAME$REQUEST_URI"
}

server "webmail.example.com" {
    listen on egress tls port 443
    root "/htdocs/rainloop"
    directory index "index.php"

    tcp { nodelay, backlog 10 }

    tls {
            certificate "/etc/ssl/webmail.example.com.crt"
            key "/etc/ssl/private/webmail.example.com.key"
    }

    hsts {
            max-age 31556952
            preload
    }

    # Value below is 25MB in bytes. 1MB = 1048576 bytes
    connection max request body 26214400

    location "/data*" {
            block return 403
    }

    location "*.php*" {
            fastcgi socket "/run/php-fpm.sock"
    }
}

قم بتهيئة PHP للسماح بالمرفقات حتى 25 ميغا بايت. قم بإجراء التغييرات التالية في /etc/php-7.3.ini:

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 25M
...
; Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading.
; http://php.net/post-max-size
post_max_size = 29M

قم بتمكين وحدات PHP اللازمة عن طريق نسخ ملفات التكوين الخاصة بها إلى /etc/php-7.3/

cp /etc/php-7.3.sample/* /etc/php-7.3/.

تحقق من بناء الجملة /etc/httpd.conf

httpd -n

قم بتمكين وبدء httpd و php-fpm.

rcctl reload httpd
rcctl enable php73_fpm
rcctl start php73_fpm

الاختبار النهائي

استعرض للوصول إلى https://webmail.example.com/?admin.

اسم المستخدم الافتراضي هو: admin
كلمة المرور الافتراضية هي: 12345 .

استعرض للوصول إلى كل قسم من أقسام التكوين وقم بإجراء التغييرات المطلوبة. بمجرد الانتهاء من التكوين ، قم بتسجيل الدخول إلى بريد الويب علىhttps://webmail.example.com



Leave a Comment

كيفية تثبيت Neos CMS على FreeBSD 12

كيفية تثبيت Neos CMS على FreeBSD 12

استخدام نظام مختلف؟ Neos عبارة عن منصة تطبيق محتوى مع CMS وإطار تطبيق في جوهرها. سيوضح لك هذا الدليل كيفية التثبيت

كيفية تثبيت osTicket على FreeBSD 12

كيفية تثبيت osTicket على FreeBSD 12

استخدام نظام مختلف؟ osTicket هو نظام تذاكر مفتوح المصدر لدعم العملاء. تتم استضافة شفرة مصدر osTicket علنًا على Github. في هذا البرنامج التعليمي

كيفية تثبيت مونيكا على FreeBSD 12

كيفية تثبيت مونيكا على FreeBSD 12

استخدام نظام مختلف؟ مونيكا هو نظام إدارة علاقات شخصية مفتوح المصدر. فكر في الأمر على أنه CRM (أداة شائعة تستخدمها فرق المبيعات في ال

قم بتثبيت WordPress على OpenBSD 6.2

قم بتثبيت WordPress على OpenBSD 6.2

مقدمة WordPress هو نظام إدارة المحتوى المهيمن على الإنترنت. يعمل على تشغيل كل شيء من المدونات إلى مواقع الويب المعقدة ذات المحتوى الديناميكي

كيفية تثبيت ProcessWire CMS 3.0 على FreeBSD 11 FAMP VPS

كيفية تثبيت ProcessWire CMS 3.0 على FreeBSD 11 FAMP VPS

استخدام نظام مختلف؟ ProcessWire CMS 3.0 هو نظام إدارة محتوى بسيط ومرن وقوي ومجاني ومفتوح المصدر (CMS). ProcessWire CMS 3.

OpenBSD كحل للتجارة الإلكترونية مع PrestaShop و Apache

OpenBSD كحل للتجارة الإلكترونية مع PrestaShop و Apache

مقدمة يوضح هذا البرنامج التعليمي OpenBSD كحل للتجارة الإلكترونية باستخدام PrestaShop و Apache. مطلوب أباتشي لأن PrestaShop لديه UR معقدة

كيفية تثبيت Apache و MySQL و PHP (FAMP) Stack على FreeBSD 12.0

كيفية تثبيت Apache و MySQL و PHP (FAMP) Stack على FreeBSD 12.0

مقدمة مكدس FAMP ، الذي يمكن مقارنته بمكدس LAMP على Linux ، هو مجموعة من البرامج مفتوحة المصدر التي يتم تثبيتها معًا عادةً

اختيار نظام التشغيل: CentOS أو Ubuntu أو Debian أو FreeBSD أو CoreOS أو Windows Server

اختيار نظام التشغيل: CentOS أو Ubuntu أو Debian أو FreeBSD أو CoreOS أو Windows Server

تقدم هذه المقالة ملخصًا موجزًا ​​لأنظمة تشغيل الخادم المقدمة كنماذج على Vultr. CentOS CentOS هو إصدار مفتوح المصدر من RHEL (Re

كيفية تثبيت X-Cart 5 على FreeBSD 12

كيفية تثبيت X-Cart 5 على FreeBSD 12

استخدام نظام مختلف؟ X-Cart هي منصة تجارة إلكترونية مفتوحة المصدر مرنة للغاية مع الكثير من الميزات والتكاملات. كود مصدر X-Cart مضيف

كيفية تثبيت PyroCMS على FreeBSD 11

كيفية تثبيت PyroCMS على FreeBSD 11

استخدام نظام مختلف؟ PyroCMS هو CMS مفتوح المصدر مكتوب بلغة PHP. يتم استضافة شفرة مصدر PyroCMS على GitHub. في هذا الدليل ، تمشي جيدًا عبر الكل

قم بإنشاء ملف Swap على FreeBSD 10

قم بإنشاء ملف Swap على FreeBSD 10

خارج الصندوق ، لم يتم تكوين خوادم Vultr FreeBSD لتشمل مساحة المبادلة. إذا كانت نيتك هي مثيل سحابة يمكن التخلص منها ، فربما لا تحتاج

تكوين MariaDB على OpenBSD 6

تكوين MariaDB على OpenBSD 6

في هذا المقال ، يوضح لك Ill كيفية تثبيت MariaDB على OpenBSD 6 وتكوينه بحيث يمكن الوصول إليه من خلال خادم ويب مختلط (Apache أو Nginx). أنت أيضا

كيفية تثبيت Craft CMS على FreeBSD 12

كيفية تثبيت Craft CMS على FreeBSD 12

استخدام نظام مختلف؟ مقدمة Craft CMS هو CMS مفتوح المصدر مكتوب بلغة PHP. تتم استضافة رمز مصدر Craft CMS على GitHub. هذا الدليل سيظهر لك

تغيير حجم تجمع التخزين ZFS على FreeBSD / TrueOS

تغيير حجم تجمع التخزين ZFS على FreeBSD / TrueOS

عند ترقية نسخة VPS على Vultr ، يتم تغيير حجم نظام ملفات Linux تلقائيًا. عند تشغيل FreeBSD مع نظام ملفات ZFS المتقدم ، هناك بعض القلق اليدوي

كيفية تثبيت TextPattern CMS 4.6.2 على FreeBSD 11 FAMP VPS

كيفية تثبيت TextPattern CMS 4.6.2 على FreeBSD 11 FAMP VPS

استخدام نظام مختلف؟ TextPattern CMS 4.6.2 هو نظام إدارة محتوى بسيط ومرن ومجاني ومفتوح المصدر (CMS) يتيح لمصممي الويب

قم بتثبيت eSpeak على FreeBSD 12

قم بتثبيت eSpeak على FreeBSD 12

استخدام نظام مختلف؟ يمكن لـ ESpeak إنشاء ملفات صوتية من تحويل النص إلى كلام (TTS). يمكن أن تكون هذه مفيدة لعدة أسباب ، مثل إنشاء تورين الخاصة بك

تثبيت pfSense على خادم Vultr Cloud Server

تثبيت pfSense على خادم Vultr Cloud Server

pfSense هي أداة مثالية لمسؤولي النظام الذين يتطلعون إلى إضافة مجموعة واسعة من الميزات إلى شبكتهم. وهي في الأساس مصدر مفتوح

حماية resolv.conf من DHCP على FreeBSD 10

حماية resolv.conf من DHCP على FreeBSD 10

إذا كنت تقوم بتشغيل المحلل الخاص بك ، أو ترغب في استخدام واحد من موفر تابع لجهة خارجية ، فقد تجد أن DHCP يتم استبدال ملف /etc/resolv.conf الخاص بك

تثبيت Akaunting على FreeBSD 12

تثبيت Akaunting على FreeBSD 12

استخدام نظام مختلف؟ مقدمة Akaunting هو برنامج محاسبة مجاني مفتوح المصدر وعبر الإنترنت مصمم للشركات الصغيرة والمستقلين. أنا

كيفية تثبيت Anchor CMS على FreeBSD 11 FAMP VPS

كيفية تثبيت Anchor CMS على FreeBSD 11 FAMP VPS

استخدام نظام مختلف؟ Anchor CMS هو محرك مدونة نظام إدارة المحتوى (CMS) بسيط للغاية وخفيف الوزن للغاية ومفتوح المصدر

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

6 أشياء شديدة الجنون حول نينتندو سويتش

6 أشياء شديدة الجنون حول نينتندو سويتش

يعرف الكثير منكم أن Switch سيصدر في مارس 2017 وميزاته الجديدة. بالنسبة لأولئك الذين لا يعرفون ، قمنا بإعداد قائمة بالميزات التي تجعل "التبديل" "أداة لا غنى عنها".

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

هل تنتظر عمالقة التكنولوجيا للوفاء بوعودهم؟ تحقق من ما تبقى دون تسليم.

وظائف طبقات معمارية مرجعية للبيانات الضخمة

وظائف طبقات معمارية مرجعية للبيانات الضخمة

اقرأ المدونة لمعرفة الطبقات المختلفة في بنية البيانات الضخمة ووظائفها بأبسط طريقة.

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

اقرأ هذا لمعرفة مدى انتشار الذكاء الاصطناعي بين الشركات الصغيرة وكيف أنه يزيد من احتمالات نموها ومنح منافسيها القدرة على التفوق.

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

لقد أصبح حل CAPTCHA صعبًا جدًا على المستخدمين في السنوات القليلة الماضية. هل ستكون قادرة على أن تظل فعالة في اكتشاف البريد العشوائي والروبوتات في المستقبل القريب؟

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

مع تطور العلم بمعدل سريع ، واستلام الكثير من جهودنا ، تزداد أيضًا مخاطر تعريض أنفسنا إلى تفرد غير قابل للتفسير. اقرأ ، ماذا يمكن أن يعني التفرد بالنسبة لنا.

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

ما هو التطبيب عن بعد والرعاية الصحية عن بعد وأثره على الأجيال القادمة؟ هل هو مكان جيد أم لا في حالة الوباء؟ اقرأ المدونة لتجد طريقة عرض!

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

ربما سمعت أن المتسللين يكسبون الكثير من المال ، لكن هل تساءلت يومًا كيف يجنون هذا النوع من المال؟ دعنا نناقش.

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

أصدرت Apple مؤخرًا macOS Catalina 10.15.4 تحديثًا تكميليًا لإصلاح المشكلات ولكن يبدو أن التحديث يتسبب في المزيد من المشكلات التي تؤدي إلى إنشاء أجهزة macOS. قراءة هذه المادة لمعرفة المزيد