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
Kendi e-posta sunucunuzu çalıştırmak oldukça faydalı olabilir. Verilerinizden siz sorumlusunuz. Ayrıca teslimat seçeneklerinizle daha fazla esneklik sağlar. Ancak, bazı zorluklar vardır. Sunucunuzu güvenlik açıklarına kadar açma ve sunucunuzu spam göndericilerin kullanması için potansiyel bir geçiş yapma riskiyle karşı karşıyasınız.
Yoldan çekilince, kendi posta sunucumuzu çalıştırmaya başlayalım.
Yüklemek için FreeBSD temel sistemine dahil olmayan üç yazılım parçası vardır:
OpenSMTPd bir posta aktarım aracısı (MTA) ve posta dağıtım aracısıdır (MDA). Bu, SMTP
protokol üzerinden diğer posta sunucularıyla iletişim kurabileceği ve ayrıca tek tek kullanıcıların posta kutularına posta teslim etmeyi de yönetebileceği anlamına gelir . OpenSMTPd'yi harici sunucularla iletişim kurabilmesi (spamd aracılığıyla filtrelenmiş) ve yerel kullanıcılara posta gönderebilmesinin yanı sıra kullanıcıdan kullanıcıya yerel posta teslim edebilmesi için ayarlayacağız.
Dovecot, yerel posta kutularını okuyan ve bunları IMAP veya POP3 üzerinden kullanıcılara sunan bir MDA'dır. Bu içeriğin sunulması için yerel kullanıcıların posta kutularını kullanır.
Spamd bir posta filtreleme hizmetidir. Postaları spamd yoluyla yönlendirebiliriz ve postaları çeşitli kara listelere, beyaz listelere ve gri listeye göre filtreleyecektir.
Bu posta sunucusu için genel fikir birkaç farklı yol gerektirir:
Outside world -> Firewall -> spamd -> OpenSMTPD -> User mail boxes
Outside world -> Firewall (spamd-whitelist) -> OpenSMTPD -> User mailboxes
Outside world -> Firewall (IMAP/POP3) -> Dovecot
Outside world -> Firewall (SMTPD submission)
Bu eğitimde, güvenlik duvarımız için OpenBSD PF'nin FreeBSD sürümünü kullanacağız. ipfw
Yapılandırmanın çok benzer olduğu yerlerde de kullanabilirsiniz .
Not: Vultr, varsayılan olarak, her yerde SMTP sunucuları tarafından kullanılan 25 numaralı bağlantı noktasını engeller. Tamamen işlevsel bir e-posta sunucusu çalıştırmak istiyorsanız, o bağlantı noktasını açmanız gerekir.
İlk olarak, gerekli programları kurmamız gerekiyor.
Sudo erişimi ayarlanmış bir kullanıcı olarak çalıştığınızı varsayarsak, aşağıdaki komutları çalıştırabiliriz. Bağlantı noktası veya paket kullanıp kullanmadığınıza bağlı olarak değişir.
Bu yardımcı programlarda yerleşik olarak belirli bir işlevsellik gerekmedikçe, paketler aracılığıyla yüklenmesi önerilir. Daha kolaydır, daha az sunucu zamanı ve kaynağı alır ve sezgisel, kullanıcı dostu bir arayüz sağlar.
sudo pkg install opensmtpd dovecot spamd
Aşağıdaki make
komutlar size birçok derleme seçeneği sunar, varsayılanlar iyi çalışır. Ne yaptığınızı tam olarak bilmiyorsanız bunları değiştirmeyin.
sudo portsnap fetch update # or run portsnap fetch extract if using ports for the first time
cd /usr/ports/mail/opensmtpd
make install # Installs openSMTPd
make clean
cd /usr/ports/mail/dovecot
make install # Installs dovecot
make clean
cd /usr/ports/mail/spamd
make install # Installs spamd
make clean
Aşağıdaki satırları eklememiz gerekecek /etc/rc.conf
:
pf_enable="YES"
pf_rules="/usr/local/etc/pf.conf"
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
obspamd_enable="YES"
obspamd_flags="-v"
obspamlogd_enable="YES"
dovecot_enable="YES"
PF'yi yapılandırmak için aşağıdakileri oluşturabiliriz /usr/local/etc/pf.conf
:
## Set public interface ##
ext_if="vtnet0"
## set and drop IP ranges on the public interface ##
martians = "{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, \
10.0.0.0/8, 169.254.0.0/16, 192.0.2.0/24, \
0.0.0.0/8, 240.0.0.0/4 }"
table <spamd> persist
table <spamd-white> persist
# Whitelisted webmail services
table <webmail> persist file "/usr/local/etc/pf.webmail.ip.conf"
## Skip loop back interface - Skip all PF processing on interface ##
set skip on lo
## Sets the interface for which PF should gather statistics such as bytes in/out and packets passed/blocked ##
set loginterface $ext_if
# Deal with attacks based on incorrect handling of packet fragments
scrub in all
# Pass spamd whitelist
pass quick log on $ext_if inet proto tcp from <spamd-white> to $ext_if port smtp \
-> 127.0.0.1 port 25
# Pass webmail servers
rdr pass quick log on $ext_if inet proto tcp from <gmail> to $ext_if port smtp \
-> 127.0.0.1 port 25
# pass submission messages.
pass quick log on $ext_if inet proto tcp from any to $ext_if port submission modulate state
# Pass unknown mail to spamd
rdr pass log on $ext_if inet proto tcp from {!<spamd-white> <spamd>} to $ext_if port smtp \
-> 127.0.0.1 port 8025
## Blocking spoofed packets
antispoof quick for $ext_if
## Set default policy ##
block return in log all
block out all
# Drop all Non-Routable Addresses
block drop in quick on $ext_if from $martians to any
block drop out quick on $ext_if from any to $martians
pass in inet proto tcp to $ext_if port ssh
# Allow Ping-Pong stuff. Be a good sysadmin
pass inet proto icmp icmp-type echoreq
# Open up imap/pop3 support
pass quick on $ext_if proto tcp from any to any port {imap, imaps, pop3, pop3s} modulate state
# Allow outgoing traffic
pass out on $ext_if proto tcp from any to any modulate state
pass out on $ext_if proto udp from any to any keep state
Bu, çalışan bir PF yapılandırmasıdır. Nispeten basittir, ancak açıklanması gereken birkaç tuhaflık vardır.
İlk olarak, cihazımızın daha sonra kullanması $ext_if
için değişkenimizi tanımlarız vtnet0
. Harici arabirime bırakılması gereken geçersiz IP adresleri de tanımlıyoruz.
Ayrıca iki tablo tanımlarız spamd
ve spamd-white
- bu iki tablo varsayılan yapılandırmasında spamd tarafından oluşturulur. Ayrıca, webmail
bazı büyük web posta sağlayıcılarına izin vermek için kullanacağımız adlı bir tablo tanımlarız .
Bir tabloyu görüntülemek için, tablodaki pfctl -t tablename -T show
öğeleri listelemek üzere komutu kullanabilirsiniz .
Birkaç KM kuralı belirledik: yerel arayüzde işlemeyi atla, harici arayüzde istatistikleri etkinleştir ve gelen paketleri fırçala.
Sonraki, trafiğimizi spamd veya OpenSMTPd'ye göndermeyi yönettiğimiz daha önemli bölümlerden biridir.
Öncelikle bir yönlendirme kuralı (burada sözdizimini not edin, FreeBSD 11 daha eski stil PF sözdizimini (OpenBSD 4.6 öncesi) kullanır, bu nedenle sözdizimi garip görünebilir. spamd
Tabloda listelenen bir ana bilgisayardan smtp'de bir şey alırsak veya spamd-white
tablo, önümüzdeki üç kural passthrough kurallar yüzden aslında posta alabilecek şekilde olan bu bağlantıları ile ilgilenir. spamd cini, üzerine bağlantı yönlendirmek. Biz listelenen IP'lerinizdeki mesajlar geçmesine spamd-white
ve webmail
üzerine düz tablolar Ayrıca, gönderim portundaki ( 587
) mesajları kabul ediyoruz .
Ardından, varsayılan politikamızı belirlemek ve SSH ve ICMP iletilerini kabul etmek için birkaç temizlik kuralı vardır.
Dovecot'a erişmek için harici arayüzümüze IMAP ve POP3'ü geçiyoruz.
Son olarak tüm giden trafiğe izin veriyoruz. Ekstra güvenlik eklemek isterseniz, geçtiğiniz bağlantı noktalarını sınırlandırabilirsiniz, ancak tek kullanımlık bir sunucu için her şeyi geçmek bir sorun değildir.
PF'yi başlat:
sudo service pf start
Güvenlik duvarı kurulumumuza göre artık posta sunucusu yapılandırmamıza geçebiliriz.
OpenSMTPd'nin çok basit ve okunması kolay bir yapılandırma sözdizimi vardır. Aşağıda görebileceğiniz gibi, tüm bir çalışma yapılandırması 14 satıra sığabilir:
#This is the smtpd server system-wide configuration file.
# See smtpd.conf(5) for more information.
ext_if=vtnet0
# If you edit the file, you have to run "smtpctl update table aliases"
table aliases file:/etc/mail/aliases
table domains file:/etc/mail/domains
# Keys
pki mail.example.com key "/usr/local/etc/letsencrypt/live/mail.example.com/privkey.pem"
pki mail.example.com certificate "/usr/local/etc/letsencrypt/live/mail.example.com/fullchain.pem"
# If you want to listen on multiple subdomains (e.g. mail.davidlenfesty) you have to add more lines
# of keys, and more lines of listeners
# Listen for local SMTP connections
listen on localhost hostname mail.example.com
# listen for filtered spamd connections
listen on lo0 port 10026
# Listen for submissions
listen on $ext_if port 587 tls-require auth pki mail.example.com tag SUBMITTED
# Accept mail from external sources.
accept from any for domain <domains> alias <aliases> deliver to maildir "~/mail"
accept for local alias <aliases> deliver to maildir "~/mail"
accept from local for any relay tls
accept tagged SUBMITTED for any relay tls
İlk olarak, harici arayüzümüzü ve birkaç tabloyu, takma adları ve alanları tanımlarız. Ardından, altındaki postaları işlemek istediğimiz alan adları için SSL anahtarına ve sertifikasına geçiyoruz.
Bir sonraki bölümde, dinlemek istediğimiz arayüzleri ve portları tanımlayacağız. İlk olarak, alan adımız ve mail.example.com
yerel bağlantılar için localhost'u dinliyoruz . Sonra spamd filtrelenmiş mesajlarımızı dinler ve harici arayüzde mesaj göndeririz. Son olarak, gönderimleri dinliyoruz, bunlar limanda gerçekleşiyor 587
ve güvenlik nedenleriyle kimlik doğrulamalarını istiyoruz.
Son olarak accept
ayarlarımız. Ana dizinimize biçiminde teslim etmek için, tablonuzdaki domains
takma adlar için tablonuzda tanımlanan alanlarımızdan herhangi birine yönelik herhangi bir mesajı kabul ediyoruz . Ardından, yerel posta kutuları için tüm yerel bağlantıları kabul ediyoruz ve e-posta gönderebilmemiz için mesajlarımızı yayıyoruz. Son olarak, gönderilen iletilerimizi aktarmaya kabul ediyoruz. Gönderme limanımız için kimlik doğrulamasına gerek duymazsak, bu büyük bir güvenlik tehlikesi olurdu. Bu, sunucumuzun spam geçişi olarak kullanılmasına izin verir.aliases
maildir
FreeBSD, varsayılan bir takma ad dosyasıyla /etc/mail/aliases
şu biçimde gönderilir:
vuser1: user1
vuser2: user1
vuser3: user1
vuser4: user2
Bu, farklı posta kutularını ve bu tanımlanmış posta kutularına gönderilen mesajları nereye iletmek istediğimizi tanımlar. Kullanıcılarımızı yerel sistem kullanıcıları veya yönlendirilecek harici posta kutuları olarak tanımlayabiliriz. Varsayılan FreeBSD dosyası oldukça açıklayıcı olduğundan referans için bu dosyaya başvurabilirsiniz.
FreeBSD varsayılan bir etki alanı dosyası sağlamaz, ancak bu inanılmaz derecede basittir:
# Domains
example.com
mail.example.com
smtp.example.com
Bu, yalnızca yeni bir satırda dinlemek istediğiniz her alanın bulunduğu düz bir metin dosyasıdır. #
Sembolünü kullanarak yorum yapabilirsiniz . Bu dosya, daha az yapılandırma satırı kullanabilmeniz için basitçe bulunur.
Posta sunucunuzla iletişiminizi güvenli hale getirmenin iki yolu vardır: otomatik olarak imzalanan ve imzalanan sertifikalar. Sertifikalarınızı kendiniz imzalamak kesinlikle mümkündür, ancak Let's Encrypt gibi hizmetler ücretsiz ve inanılmaz derecede kolay imzalama sağlar.
İlk önce certbot programını kurmalıyız.
sudo pkg install py-certbot
Alternatif olarak, bağlantı noktaları ile kurulabilir:
cd /usr/ports/security/py-certbot
make install
make clean
Ardından, sertifikanızı almak 80
için harici arayüzünüzde bağlantı noktasını açtığınızdan emin olmanız gerekir . Aşağıdaki satırları filtreleme kurallarınızda bir yere ekleyin /usr/local/etc/pf.conf
:
pass quick on $ext_if from any to any port http
Sonra pfctl -f /usr/local/etc/pf.conf
kural kümesini yeniden yüklemek için çalıştırın .
Ardından, sertifika almak istediğiniz tüm alanlar için komutu çalıştırabilirsiniz:
certbot certonly --standalone -d mail.example.com
certbot renew
Sertifikalarınızın süresinin dolmamasını sağlamak için 6 ayda bir çalıştırılacak bir crontab girişi ayarlamanız önerilir .
Ardından, ilgili her etki alanı için satırları doğru anahtar dosyasını gösterecek şekilde değiştirebilirsiniz:
pki mail.example.com key "/usr/local/etc/letsencrypt/live/mail.example.com/privkey.pem"
pki mail.example.com certificate "/usr/local/etc/letsencrypt/live/mail.example.com/fullchain.pem"
Menkul kıymetleri düzenleyin:
sudo chmod 700 /usr/local/etc/letsencrypt/archive/mail.example.com/*
Not: Bunu her orijinal anahtar dosyası için yapmanız gerekir, aksi takdirde OpenSMTPd bunları açmaz.
Şimdi hizmeti başlatabiliriz:
sudo service smtpd start
Burada, Internet'ten aldığımız spam miktarını azaltmak için OpenBSD'nin spamd arka plan programını kullanıyoruz. Temel olarak, bu, çeşitli spam kaynaklarından kötü olarak bilinen IP'lerin yanı sıra (varsayılan olarak) gelen "gri listeleme" gelen bağlantıları filtreler. Spamd ayrıca kara listeye alınan ve gri listeye alınan bağlantıları "kekeleyerek" spam gönderenin zamanını boşa harcamayı dener.
Bir bağlantıyı gri listeye almak, herhangi bir kara listede veya beyaz listede bulunmayan yeni bir IP adresi bağlandığında yapılır. Yeni adres bağlandığında, spamd iletiyi hatalı bir hata iletisiyle bırakır, ardından geçici bir listeye ekler. Spam gönderenlere iletilen iletiler için ödeme yapıldığından, bir hatayı yeniden denemezler, ancak meşru bir hizmet nispeten kısa süre içinde yeniden dener.
Bağlamak için aşağıdakileri çalıştırmanız gerekir fdescfs
:
mount -t fdescfs null /dev/fd
Ardından bu satırı şu adrese eklemeniz gerekir /etc/fstab
:
fdescfs /dev/fd fdescfs rw 0 0
Varsayılan yapılandırma dosyası (içinde bulundu /usr/local/etc/spamd/spamd.conf.sample
) iyi çalışır. Yeni kaynaklar eklemek veya kullandığınız kaynakları değiştirmek için düzenleyebilirsiniz:
sudo cp /usr/local/etc/spamd/spamd.conf.sample /usr/local/etc/spamd/spamd.conf
Hizmeti aşağıdakilerle başlatabiliriz:
sudo service obspamd start
Bu noktada spamd kurulur.
Gri liste yaklaşımıyla ilgili bir sorun, büyük posta hizmetlerinin genellikle birçok farklı makaradan biri aracılığıyla posta göndermesi ve her seferinde aynı sunucunun mesajı göndermesinin garanti edilmemesidir. Bunun bir çözümü, çeşitli web posta hizmetleri tarafından kullanılan IP aralıklarını beyaz listeye almaktır. Web posta tablosunun PF yapılandırmasında kullanıldığı şey budur. Bu strateji, bir spam göndericinin kullandığı bir IP adresi eklerseniz geri tepebilir, ancak tabloya koyduğunuz aralıklara dikkat ettiğiniz sürece iyi olacaksınız.
Web postası tablosuna bir e-posta aralığı eklemek için aşağıdaki komutu çalıştırabilirsiniz:
pfctl -t webmail -T add 192.0.2.0/24
Kullanıcıların postalarına SSH yoluyla giriş yapmadan erişmelerini istiyorsanız, IMAP ve / veya POP3'ü destekleyen bir MDA'ya ihtiyacınız olacaktır. Çok popüler bir program, oldukça basit bir konfigürasyon ve güçlü özelliklere sahip Dovecot'tur.
Varsayılan yapılandırmayı kopyalayabiliriz:
cd /usr/local/etc/dovecot
cp -R example-config/* ./
Yapılandırma birkaç farklı dosyadan oluşur. Yapılandırmanız ve dovecot varsayılanları arasındaki farkları görmek için aşağıdaki komutu çalıştırın:
sudo doveconf -n
Aşağıdakiler basit, çalışan bir yapılandırmadır:
# 2.3.2.1 (0719df592): /usr/local/etc/dovecot/dovecot.conf
# OS: FreeBSD 11.2-RELEASE amd64
# Hostname: mail.example.com
hostname = mail.example.com
mail_location = maildir:~/mail
namespace inbox {
inbox = yes
location =
mailbox Archive {
auto = create
special_use = \Archive
}
mailbox Archives {
auto = create
special_use = \Archive
}
mailbox Drafts {
auto = subscribe
special_use = \Drafts
}
mailbox Junk {
auto = create
autoexpunge = 60 days
special_use = \Junk
}
mailbox Sent {
auto = subscribe
special_use = \Sent
}
mailbox "Sent Mail" {
auto = no
special_use = \Sent
}
mailbox "Sent Messages" {
auto = no
special_use = \Sent
}
mailbox Spam {
auto = no
special_use = \Junk
}
mailbox Trash {
auto = no
autoexpunge = 90 days
special_use = \Trash
}
prefix =
separator = /
}
passdb {
args = imap
driver = pam
}
ssl = required
ssl_cert = </usr/local/etc/letsencrypt/live/mail.example.com/fullchain.pem
ssl_dh = </usr/local/etc/dovecot/dh.pem
ssl_key = </usr/local/etc/letsencrypt/live/mail.example.com/privkey.pem
userdb {
driver = passwd
}
Çoğu yapılandırma dosyası conf.d
Önemli olanlardır 10-auth.conf
, 10-mail.conf
ve 10-ssl.conf
.
Kullandığınız farklı posta kutularını yapılandırabilirsiniz 15-mailboxes.conf
. Yukarıda gördüğünüz, birçok sistem için iyi bir yapılandırmadır, ancak kilometreniz değişebilir. Mümkün olduğu kadar çok farklı müşteri ile bu konuda oynamak tavsiye edilir.
Varsayılan ayarların çoğu doğrudur. Kimlik doğrulaması için sistem kullanıcılarını kullanmak istiyorsanız, düzenlemeniz gerekir 10-auth.conf
.
Aşağıdaki satırı uncomment edin:
! dahil auth-system.conf.ext
Diffie-Hellman parametrelerini üretmeliyiz:
sudo nohup openssl dhparam -out /usr/local/etc/dovecot/dh.pem
Not: Bu işlem uzun zaman alacaktır. Beklediğinizden çok daha uzun.
Şimdi Dovecot'u başlatabiliriz:
sudo service dovecot start
Bu noktada işlevsel, güvenli ve nispeten spam içermeyen bir posta sunucumuz var.
Buradan dikkat edilmesi gereken bazı şeyler, sezgisel olarak spam'den kurtulmak için SpamAssassin kullanmanın yanı sıra güvendiğiniz kaynakların ortaya koyduğu daha fazla spamd kara listesi bulmaktır.
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