การติดตั้ง pfSense บน Vultr Cloud Server
pfSense เป็นเครื่องมือที่เหมาะสำหรับผู้ดูแลระบบที่ต้องการเพิ่มคุณสมบัติที่หลากหลายในเครือข่ายของพวกเขา มันเป็นหลักที่มาเปิด
บทช่วยสอนนี้แสดงให้เห็นถึงเซิร์ฟเวอร์อีเมลแบบเต็มรูปแบบที่ทำงานบน 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 จะฟังเฉพาะที่ localhost เท่านั้น ต้องกำหนดค่าอย่างชัดเจนเพื่อฟังบนอินเตอร์เฟสภายนอก ควรกำหนดค่าให้ใช้ผู้ใช้เสมือนแทนผู้ใช้ระบบเพื่อความปลอดภัย
สำรองข้อมูล/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"
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
ที่คุณจะได้รับการแจ้งเตือนต่อไปนี้: คาดว่าจะเป็นแบบนี้ หลีกเลี่ยงนี้เกะกะไดเรกทอรีที่มีไฟล์ dot /etc/skel
จาก ไม่จำเป็นเนื่องจากบัญชี vmail ไม่อนุญาตให้ลงชื่อเข้าใช้
doas chmod 0440 / etc / mail / credentials doas chown smtpd: dovecot / etc / mail / หนังสือรับรอง doas useradd -c "บัญชีเมลเสมือน" -d / var / vmail -s / sbin nologin -u 2000 -g = uid -l พนักงาน vmail doas mkdir / var / vmail doas chown vmail: vmail / var / vmail
สร้าง/etc/mail/virtuals
เพื่อกำหนดที่อยู่อีเมลที่ถูกต้อง
/var/vmail/example.com/<user>
จะส่งข้อความไปยังความพยายามในการส่งอีเมลสำหรับที่อยู่ที่ไม่ได้กำหนดในไฟล์นี้จะถูกตีกลับด้วยการแจ้งสถานะการจัดส่ง
[email protected]: [email protected] [email protected]: [email protected] [email protected]: [email protected] [email protected]: [email protected] [email protected]: vmail [email protected]: vmail [email protected]: vmail
ตัวอย่างนี้ใช้ใบรับรองแบบลงนามด้วยตนเอง ใช้ใบรับรองที่ลงชื่อที่ถูกต้องหากคุณมี เมื่อได้รับพร้อมต์สำหรับชื่อสามัญตรวจสอบให้แน่ใจว่าตรงกับ 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 daemon
doas smtpd -n
doas rcctl restart smtpd
จากบัญชีอีเมลภายนอกให้ส่งอีเมลทดสอบไปยังผู้ใช้คนใดคนหนึ่ง
/var/vmail
/var/vmail/example.com/<username>/new
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 ต้องการความสามารถในการเปิดไฟล์จำนวนมากขึ้นสำหรับการอ่านและการเขียนมากกว่าคลาสเริ่มต้นที่อนุญาต การไม่ทำเช่นนี้จะทำให้เกิดข้อผิดพลาดที่แก้ไขได้ยาก
กำหนดคลาสล็อกอินสำหรับ Dovecot daemon ที่ด้านล่างของ/etc/login.conf
เพิ่มบรรทัดต่อไปนี้
dovecot:\
:openfiles-cur=1024:\
:openfiles-max=2048:\
:tc=daemon:
/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 อ้างอิงเอกสารทางการสำหรับรายละเอียดเพิ่มเติม ตัวอย่างนี้สร้างคำนิยามสำหรับโดเมนของเราเพื่อเปิดใช้งานการลงนาม 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 หากคุณไม่ต้องการใช้เว็บเมลให้หยุดที่นี่
เมื่อได้รับแจ้งโปรดเลือก PHP เวอร์ชันล่าสุด
pkg_add php php-curl php-pdo_sqlite php-zip pecl73-mcrypt zip unzip wget curl
เรียก RainLoop เว็บเมล tarball /var/www/htdocs/
และแยกไป
ใช้ Standard Edition ซึ่งรวมถึงตัวอัปเดตอัตโนมัติ
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
/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
}
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
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
เรียกดูเพื่อ
ชื่อผู้ใช้เริ่มต้นคือ: ผู้ดูแลระบบ
รหัสผ่านเริ่มต้นคือ: 12345
เรียกดูแต่ละส่วนการกำหนดค่าและทำการเปลี่ยนแปลงที่คุณต้องการ เมื่อคุณตั้งค่าเสร็จแล้วให้เข้าสู่เว็บเมลที่https://webmail.example.com
pfSense เป็นเครื่องมือที่เหมาะสำหรับผู้ดูแลระบบที่ต้องการเพิ่มคุณสมบัติที่หลากหลายในเครือข่ายของพวกเขา มันเป็นหลักที่มาเปิด
ใช้ระบบที่แตกต่างกันอย่างไร LimeSurvey เป็นซอฟต์แวร์สำรวจโอเพ่นซอร์สที่เขียนด้วย PHP รหัสที่มา LimeSurvey โฮสต์บน GitHub คู่มือนี้จะแสดงให้คุณเห็น
ข้อกำหนดความรู้พื้นฐานของ UNIX FreeBSD x64 พร้อมติดตั้ง Nginx ติดตั้งเครื่องมือคุณจะต้องใช้หลายโปรแกรมที่ไม่ได้จัดส่งมาพร้อมกับ FreeBSD Ru
ใช้ระบบที่แตกต่างกันอย่างไร Automad เป็นระบบจัดการเนื้อหาแบบโอเพนซอร์ซ (CMS) และเทมเพลตเอนจินที่เขียนด้วย PHP รหัสที่มา Automad ฉัน
ใช้ระบบที่แตกต่างกันอย่างไร Redaxscript 3.2 CMS เป็นระบบจัดการเนื้อหา (CMS) ที่ทันสมัยและมีน้ำหนักเบาฟรีและโอเพนซอร์สที่มี rocket-fas
ใช้ระบบที่แตกต่างกันอย่างไร X-Cart เป็นแพลตฟอร์มอีคอมเมิร์ซแบบโอเพ่นซอร์สที่มีความยืดหยุ่นสูงพร้อมคุณสมบัติและการผสานรวมมากมาย ซอร์สโค้ด X-Cart เป็นโฮสต์
บทนำ WordPress เป็นระบบจัดการเนื้อหาที่โดดเด่นบนอินเทอร์เน็ต มันเพิ่มประสิทธิภาพทุกอย่างตั้งแต่บล็อกไปจนถึงเว็บไซต์ที่ซับซ้อนพร้อมเนื้อหาแบบไดนามิก
Murmur เป็นซอฟต์แวร์เซิร์ฟเวอร์อย่างเป็นทางการสำหรับโปรโตคอลการสื่อสารด้วยเสียง Mumble การดำเนินการอย่างเป็นทางการนี้มีเสถียรภาพและมีประสิทธิภาพ คู่มือนี้จะ
บทช่วยสอนนี้จะแสดงวิธีปกป้องเซิร์ฟเวอร์ FreeBSD ของคุณโดยใช้ไฟร์วอลล์ OpenBSD PF เราจะสมมติว่าคุณมีการติดตั้ง FreeBSD ที่สะอาดแล้ว
ใช้ระบบที่แตกต่างกันอย่างไร Cachet เป็นระบบหน้าสถานะโอเพนซอร์สที่เขียนด้วย PHP ซอร์สโค้ดสำหรับ Cachet นั้นโฮสต์บน GitHub ในคู่มือนี้คุณจะ
ใช้ระบบที่แตกต่างกันอย่างไร WonderCMS เป็นโอเพนซอร์ซ CMS แบบเร็วและเล็กเขียนด้วย PHP รหัสที่มาของ WonderCMS นั้นโฮสต์บน Github คู่มือนี้จะ
คำนำวัตถุประสงค์ของคู่มือนี้เพื่อแสดงให้คุณเห็นว่าการสร้างโฮมเพจสำหรับเว็บไซต์ของคุณบน Vultr ด้วย OpenBSD และ httpd นั้นง่ายเพียงใด กำลังสร้าง
วานิชเป็นแคชเซิร์ฟเวอร์โอเพ่นซอร์สที่เก็บเนื้อหาจากเว็บเซิร์ฟเวอร์ มันถูกติดตั้งที่ด้านหน้าของเว็บเซิร์ฟเวอร์เช่น Apache หรือ Nginx เรื่องของชินชิน
ใช้ระบบที่แตกต่างกันอย่างไร Dolibarr เป็นการวางแผนทรัพยากรขององค์กรโอเพ่นซอร์ส (ERP) และการจัดการลูกค้าสัมพันธ์ (CRM) สำหรับธุรกิจ Dolibarr
เซิร์ฟเวอร์ VPS มักถูกโจมตีโดยผู้บุกรุก การโจมตีประเภททั่วไปจะปรากฏในบันทึกของระบบเมื่อมีการพยายามล็อกอินหลายร้อยครั้งโดยไม่ได้รับอนุญาต การตั้งค่า
ใช้ระบบที่แตกต่างกันอย่างไร ProcessWire CMS 3.0 เป็นระบบจัดการเนื้อหา (CMS) ที่ง่ายยืดหยุ่นและมีประสิทธิภาพฟรีและโอเพนซอร์ส ProcessWire CMS 3
ใช้ระบบที่แตกต่างกันอย่างไร Matomo (ชื่อเดิม Piwik) เป็นแพลตฟอร์มการวิเคราะห์โอเพนซอร์ซซึ่งเป็นทางเลือกเปิดให้ Google Analytics แหล่งที่มาของ Matomo นั้นโฮสต์อยู่
ใช้ระบบที่แตกต่างกันอย่างไร TLS 1.3 เป็นเวอร์ชันของโปรโตคอล Transport Layer Security (TLS) ที่เผยแพร่ในปี 2018 ตามมาตรฐานที่เสนอใน RFC 8446
ใช้ระบบที่แตกต่างกันอย่างไร Mailtrain เป็นแอปรับจดหมายข่าวแบบโอเพ่นซอร���สที่สร้างขึ้นบน Node.js และ MySQL / MariaDB แหล่งที่มาของ Mailtrains อยู่บน GitHub Thi
เรียนรู้วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7; ระบบการจัดการเนื้อหา Headless ที่มีความยืดหยุ่นสูงและปลอดภัย
เรียนรู้วิธีการตั้งค่า Nginx บน Ubuntu สำหรับการสตรีมวิดีโอสด HLS ด้วยคำแนะนำที่ชัดเจนและเป็นประโยชน์
เรียนรู้การใช้ Percona XtraBackup สำหรับการสำรองข้อมูลด้วยวิธีที่เป็นระบบและง่ายดายบน WordPress ออนไลน์ของคุณ
ReactOS ซึ่งเป็นโอเพ่นซอร์สและระบบปฏิบัติการฟรีพร้อมเวอร์ชันล่าสุดแล้ว สามารถตอบสนองความต้องการของผู้ใช้ Windows ยุคใหม่และล้ม Microsoft ได้หรือไม่? มาหาข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบเก่านี้ แต่เป็นประสบการณ์ OS ที่ใหม่กว่ากัน
การโจมตีของ Ransomware กำลังเพิ่มขึ้น แต่ AI สามารถช่วยจัดการกับไวรัสคอมพิวเตอร์ตัวล่าสุดได้หรือไม่? AI คือคำตอบ? อ่านที่นี่รู้ว่า AI boone หรือ bane
ในที่สุด Whatsapp ก็เปิดตัวแอพเดสก์ท็อปสำหรับผู้ใช้ Mac และ Windows ตอนนี้คุณสามารถเข้าถึง Whatsapp จาก Windows หรือ Mac ได้อย่างง่ายดาย ใช้ได้กับ Windows 8+ และ Mac OS 10.9+
อ่านข้อมูลนี้เพื่อทราบว่าปัญญาประดิษฐ์กำลังได้รับความนิยมในหมู่บริษัทขนาดเล็กอย่างไร และเพิ่มโอกาสในการทำให้พวกเขาเติบโตและทำให้คู่แข่งได้เปรียบ
เมื่อเร็ว ๆ นี้ Apple เปิดตัว macOS Catalina 10.15.4 การอัปเดตเสริมเพื่อแก้ไขปัญหา แต่ดูเหมือนว่าการอัปเดตทำให้เกิดปัญหามากขึ้นที่นำไปสู่การสร้างเครื่อง Mac อ่านบทความนี้เพื่อเรียนรู้เพิ่มเติม
13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data
คอมพิวเตอร์ของเราจัดเก็บข้อมูลทั้งหมดในลักษณะที่เรียกว่าระบบไฟล์บันทึก เป็นวิธีการที่มีประสิทธิภาพที่ช่วยให้คอมพิวเตอร์สามารถค้นหาและแสดงไฟล์ได้ทันทีที่คุณกดค้นหาhttps://wethegeek.com/?p=94116&preview=true