26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm
26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm
Bu eğitici, OpenSMTPD, Dovecot, Rspamd ve RainLoop kullanarak OpenBSD üzerinde çalışan tam özellikli bir e-posta sunucusunu gösterir. OpenSMTPD, OpenBSD için varsayılan posta sunucusudur. Beklenen kullanıcı sayısı için bol miktarda depolama alanına sahip bir Vultr Compute Cloud örneği seçin.
Kullanıcı hesabınızı görevleri root olarak gerçekleştirecek şekilde ayarlayın.
su -
usermod -G wheel <username>
echo "permit nopass keepenv :wheel" > /etc/doas.conf
exit
OpenBSD için paket deposunu ayarlayın.
doas su
echo "https://cdn.openbsd.org/pub/OpenBSD" > /etc/installurl
exit
Gerekli paketleri ekleyin.
doas pkg_add opensmtpd-extras opensmtpd-filter-rspamd dovecot dovecot-pigeonhole rspamd redis
Varsayılan olarak, OpenSMTPD yalnızca localhost'u dinler. Harici arayüzleri dinlemek için açıkça yapılandırılmalıdır. Güvenlik için sistem kullanıcıları yerine sanal kullanıcılar kullanacak şekilde yapılandırılmalıdır.
Varsayılan /etc/smtpd.conf
dosyayı yedekleyin ve sıfırdan yeni bir dosya oluşturun.
cd /etc/mail
mv smtpd.conf smtpd.conf.default
smtpd.conf
Aşağıda gösterildiği gibi yeni bir tane oluşturun . example.com
Alan adınızla değiştirin . Bu ilk yapılandırma OpenSMTP test edilirken rspamd filtresini etkinleştirmez. Spam filtresi daha sonra etkinleştirilecektir.
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 ve Dovecot bir kimlik doğrulama veritabanını paylaşabilir. Bu veritabanı Dovecot için fazladan iki alan içeren sistem şifre dosyasına benzer. İki özel alan sanal giriş dizinini ve posta konumunu tanımlar. Parolalar balon balığı biçimindedir. Bu eğiticide üç örnek kullanıcı oluşturulur.
Parolaları oluşturun ve bunları /etc/mail/credentials
dosyayla birleştirin .
doas su
smtpctl encrypt example_password1 >> /etc/mail/credentials
smtpctl encrypt example_password2 >> /etc/mail/credentials
smtpctl encrypt example_password3 >> /etc/mail/credentials
exit
Çıktı buna benzer:
$2b$10$agmNBPvFm1zqCjbbZC3JbO4Ns2jJNZQfTS45MAnKi.IPrkKITyTa6
$2b$10$LwkcKVVnwG8hDxu2W4YKD.K0kQ2oylOmQ9SBUb0hIopBsmNxYPb4e
$2b$10$bgLW/GMZyRXKbROgRQIvRu4xbeOqOJJXlgEAKuS5sIrBvfdPvEzeq
Düzen /etc/mail/credentials
gerekli alanları ekleyin. Her satır , UID ve 2000 GID değerine sahip bir sistem hesabıyla ( vmail) eşleşir . Example.com'u alan adınızla değiştirin. Sanal kullanıcı adı tam e-posta adresidir.
[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
salt okunur izinlerini ayarlayın ._smtpd
_dovecot
Oluştur vmail
sistem kullanıcı, grup ve ev dizini.
Eğer vmail sistem kullanıcıyı oluşturduğunuzda, aşağıdaki uyarıyı alırsınız: useradd: Warning: home directory '/var/vmail' doesn't exist, and -m was not specified
. Bu bekleniyor. Bu, dizinin nokta dosyalarıyla birlikte dağılmasını önler /etc/skel
. Vmail hesabı oturum açmaya izin vermediği için gerekli değildir.
doas chmod 0440 / etc / mail / kimlik bilgileri doas chown smtpd: dovecot / etc / mail / kimlik bilgileri doas useradd -c "Sanal Posta Hesabı" -d / var / vmail -s / sbin nologin -u 2000 -g = uid -L personel vmail doas mkdir / var / vmail doas chown vmail: vmail / var / vmail
/etc/mail/virtuals
Geçerli e-posta adreslerini tanımlamak için oluşturun .
/var/vmail/example.com/<user>
.Bu dosyada tanımlı olmayan adresler için posta teslimi, Teslim Durumu Bildirimi ile geri döner.
[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
Bu örnekte kendinden imzalı bir sertifika kullanılmaktadır. Varsa, geçerli bir imzalı sertifika kullanın. Ortak ad istendiğinde, sunucunun FQDN'siyle eşleştiğinden emin olun. Bu örnekte mail.example.com kullanılmaktadır.
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 yapılandırma sözdizimi denetleyicisini kullanın. Herhangi bir sorun bulunmazsa smtpd arka plan programını yeniden başlatın.
doas smtpd -n
doas rcctl restart smtpd
Dış posta hesabından, kullanıcılardan birine bir test e-postası gönderin.
/var/vmail
teslim edecektir /var/vmail/example.com/<username>/new
.1576339842.4d64757b.example.com:2,
.E-posta dağıtımının düzgün çalıştığını doğrulamak için tüm posta başlıkları da dahil olmak üzere dosyanın içeriğini inceleyin.
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, okuma ve yazma için varsayılan sınıfın izin verdiğinden daha fazla sayıda dosyaya sahip olma yeteneğini gerektirir. Bunun yapılmaması, giderilmesi zor hatalara neden olacaktır.
Dovecot arka plan programı için bir giriş sınıfı tanımlayın. Ün altı /etc/login.conf
aşağıdaki satırları ekleyin.
dovecot:\
:openfiles-cur=1024:\
:openfiles-max=2048:\
:tc=daemon:
Oluşturun /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'ta ssl_cert
ve ssl_key
ayarlarının local.conf
dosyada geçersiz kılınmadığı bir hata var, bu yüzden onları yorumlamamız gerekiyor. Bu adımı kaçırırsanız, Dovecot doğru şekilde başlayamaz.
Düzenleme /etc/dovecot/conf.d/10-ssl.conf
olarak gösterilen.
...
# 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
...
Elek komut dosyaları Rspamd'i spam ve jambon konusunda eğitir . E-postaları önemsiz klasörün içine ve dışına taşımak, Rspamd'i eğitmek için bir olayı tetikler.
Bu dosyalar /usr/local/lib/dovecot/sieve
.
report-ham.sieve
Dosyayı oluşturun .
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
Dosyayı oluşturun .
require ["vnd.dovecot.pipe", "copy", "imapsieve", "environment", "variables"];
if environment :matches "imap.user" "*" {
set "username" "${1}";
}
pipe :copy "sa-learn-spam.sh" [ "${username}" ];
Dosyaları derleyin.
sievec report-ham.sieve
sievec report-spam.sieve
Aşağıdaki iki kabuk betiğini /usr/local/lib/dovecot/sieve
Aşağıdakileri şuraya ekle: sa-learn-ham.sh
#!/bin/sh
exec /usr/local/bin/rspamc -d "${1}" learn_ham
Aşağıdakileri şuraya ekle: sa-learn-spam.sh
#!/bin/sh
exec /usr/local/bin/rspamc -d "${1}" learn_spam
Dosyaları yürütülebilir yapın.
chmod 0755 sa-learn-ham.sh
chmod 0755 sa-learn-spam.sh
Dovecot'u etkinleştirin ve başlatın.
rcctl enable dovecot
rcctl start dovecot
Dovecot'un düzgün başladığını kontrol edin.
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'un doğru okuyabildiğini doğrulama /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
Bir posta kullanıcısının giriş yapabileceğini doğrulayın.
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
Bu temel bir Rspamd yapılandırmasıdır, daha fazla ayrıntı için resmi belgelere bakın. Bu örnek, alan adımız için DKIM imzalamayı etkinleştirmek üzere bir tanım oluşturur.
Genel / özel bir anahtar çifti oluşturun /etc/mail/dkim
ve doğru izinleri ayarlayın.
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
DKIM için ortak anahtarı içeren bir DNS kaydı oluşturun. DKIM kaydı oluşturma hakkında ayrıntılı bilgi için DNS sağlayıcınıza başvurun. İçeriği kopyalayın ve aşağıda gösterildiği gibi DKIM kaydının bir kısmından /etc/mail/dkim/public.key
sonra yapıştırın p=
. Bu örneğin ayrıca bir SPF kaydı oluşturduğunu unutmayın.
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"
Bir DMARC kaydı oluşturun.
_dmarc.example.com. IN TXT "v=DMARC1;p=none;pct=100;rua=mailto:[email protected]"
/etc/rspamd/local.d/dkim_signing.conf
Yapılandırma dosyasını oluşturun .
selector="default";
Hat DKIM DNS kaydının (birinci bölümünden türetilir default._domainkey....
yukarıda oluşturulan).
domain {
example.com {
path = "/etc/mail/dkim/example.com.key";
selector = "default";
}
}
Rspamd'yi etkinleştirin ve başlatın.
doas rcctl enable redis rspamd
doas rcctl start redis rspamd
Aşağıdaki satırları değiştirin /etc/mail/smtpd.conf
ve Rspamd'yi etkinleştirmek için OpenSMTPD'yi yeniden başlatın.
...
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
Posta sunucusunu POP3 veya IMAP e-posta istemcisi ile sınayın. Web postasına ihtiyacınız yoksa, burada durun.
İstendiğinde, lütfen PHP'nin en güncel sürümünü seçin.
pkg_add php php-curl php-pdo_sqlite php-zip pecl73-mcrypt zip unzip wget curl
RainLoop web postası tarball'ını alın ve adresine çıkartın /var/www/htdocs/
.
Otomatik güncelleyici içeren Standart Sürümü kullanın.
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
Dosyanın altına aşağıdaki satırları ekleyin:
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
Düzenleme /etc/httpd.conf
Aşağıdaki örnekte aşağıdaki.
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 sözdizimi denetimini çalıştırın.
httpd -n
Httpd'yi etkinleştirin ve başlatın.
rcctl enable httpd
rcctl start httpd
Let's Encrypt sertifikasını isteyin.
acme-client -v webmail.example.com
RainLoop için sunucu tanımlarını ekleyin /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'yi 25 megabayta kadar eklere izin verecek şekilde yapılandırın. Aşağıdaki değişiklikleri yapın /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
Yapılandırma dosyalarını kopyalayarak gerekli PHP modüllerini etkinleştirin /etc/php-7.3/
cp /etc/php-7.3.sample/* /etc/php-7.3/.
Sözdizimini kontrol edin /etc/httpd.conf
httpd -n
Httpd ve php-fpm'yi etkinleştirin ve başlatın.
rcctl reload httpd
rcctl enable php73_fpm
rcctl start php73_fpm
Adresine göz atın https://webmail.example.com/?admin
.
Varsayılan kullanıcı adı: admin
Varsayılan şifre: 12345 .
Yapılandırma bölümlerinin her birine göz atın ve istediğiniz değişiklikleri yapın. Yapılandırmayı tamamladıktan sonra adresinden web postasına giriş yapınhttps://webmail.example.com
26 Büyük Veri Analitik Tekniğine Bir Bakış: 1. Bölüm
Birçoğunuz Switch'in Mart 2017'de çıkacağını ve yeni özelliklerini biliyorsunuz. Bilmeyenler için, 'Switch'i 'olmazsa olmaz bir gadget' yapan özelliklerin bir listesini hazırladık.
Teknoloji devlerinin sözlerini yerine getirmesini mi bekliyorsunuz? teslim edilmeyenleri kontrol edin.
Büyük Veri Mimarisindeki farklı katmanları ve işlevlerini en basit şekilde öğrenmek için blogu okuyun.
Yapay Zekanın küçük ölçekli şirketler arasında nasıl popüler hale geldiğini ve onları büyütme ve rakiplerine üstünlük sağlama olasılıklarını nasıl artırdığını öğrenmek için bunu okuyun.
CAPTCHA, son birkaç yılda kullanıcıların çözmesi oldukça zorlaştı. Gelecekte spam ve bot tespitinde etkili kalabilecek mi?
Bilim hızla gelişip birçok çabamızı üstlendikçe, kendimizi açıklanamaz bir Tekilliğe maruz bırakmanın riskleri de artıyor. Okuyun, tekillik bizim için ne anlama gelebilir.
Teletıp, uzaktan sağlık hizmetleri ve gelecek nesiller üzerindeki etkisi nedir? Pandemi durumunda iyi bir yer mi değil mi? Bir görünüm bulmak için blogu okuyun!
Bilgisayar korsanlarının çok para kazandığını duymuş olabilirsiniz, ancak bu kadar parayı nasıl kazandıklarını hiç merak ettiniz mi? Hadi tartışalım.
Son zamanlarda Apple, sorunları gidermek için macOS Catalina 10.15.4'ü ek bir güncelleme yayınladı, ancak güncelleme, mac makinelerinde tuğla oluşmasına neden olan daha fazla soruna neden oluyor gibi görünüyor. Daha fazla bilgi edinmek için bu makaleyi okuyun