… [Trackback]
[…] Read More here on that Topic: blog.neterra.cloud/bg/izgrazhdane-na-sobstven-imeyl-sarvar-na-freebsd/ […]
Да имате собствен имейл сървър изглежда като много предизвикателна задача, но не се притеснявайте. Ние ще ви помогнем да изградите собствен имейл сървър на FreeBSD.
Трябва ви сървър с отворен порт 25. Може да вземете клауд сървър или нает сървър и след това следния софтуер:
OpenSMTPd – MTA (message transfer agent), това е преносният агент, който ще използваме. Той ще осъществява комуникацията (през SMTP протокол) с имейл сървърите на други компании и ще доставя пристигащите имейли до съответните пощенски кутии на потребителите в FreeBSD.
Dovecot – Това ще е MDA (агент по доставки на съобщения) за този гид. Ще използва IMAP или POP3 за доставки на имейли до потребителите.
Spamd – спам филтър. Може да използвате различни критерии за филтриране на имейли и да ги организирате в списъци.
Идеята е:
Външния свят ➡️ Защитна стена (Firewall) ➡️ spamd ➡️ OpenSMTPD ➡️ Пощенските кутии на потребителите
Външния свят ➡️ Защитна стена (Firewall) (spamd-allow списък позволени) ➡️ OpenSMTPD ➡️Пощенските кутии на потребителите
Външния свят ➡️ Защитна стена (Firewall) (IMAP/POP3) ➡️ Dovecot
Външния свят ➡️ Защитна стена (Firewall) (SMTPD submission)
Първата стъпка е да инсталираме нужния софтуер. За целта трябва да сте администратор (да имате судо привилегии). Може да следвате тази команда:
sudo pkg install opensmtpd dovecot spamd
Ще трябва да редактираме конфигурацията като добавим следните редове текст към /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 firewall, затова следващата ни стъпка ще е да създадем конфигурация в /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-allow> persist
# Allowed 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 allow list
pass quick log on $ext_if inet proto tcp from <spamd-allow> 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-allow> <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
Тук добавяме $ext_if променлива за vtnet0 устройство, за да го използваме по-късно. Също така дефинираме невалидни IP адреси, които не бива да бъдат позволявани на външни интерфейси.
Има две таблици spamd и spamd-allow, които идват по подразбиране от spamd. И ние добавяме още една таблица webmail. В тази ще добавим големите уеб мейл доставчици.
За да видите таблицата, може да ползвате тази команда:
pfctl -t tablename -T show
С тази команда казваме, че искаме да пропуснем обработката по локалния интерфейс, позволяваме статистики за външния интерфейс и пренасочите идващите пакети. Следващата стъпка е да администрираме изходящия трафик към spamd или OpenSMTPd.
Синтаксисът на правилата за пренасочване са старите от PF синтаксиса. Някои неща може да ви се сторят малко странни. Целия трафик, който ще получаваме на SMTP от други устройства от таблицата spamd или, който не е в таблицата spamd-allow, ще бъде пренасочен през spamd deamon, който ще го администрира. Има няколко правила за предаването на получените имейли. Позволяваме съобщения от IP адресите, записани в spam-allow и webmail таблиците от OpenSMTPd. Ще получаваме съобщения на порт 587 (submission port).
Следват няколко правила, за по-подредена администрация, създаване на основни политики, позволяване на SSH и ICMP съобщения.
След това пускаме IMAP и POP3 на външния ни интерфейс и към Dovecot.
Следващата команда ще позволи целия изходящ трафик.
Стартирайте защитната стена (firewall PF):
sudo service pf start
Защитната стена е готова.
Сега да конфигурираме OpenSMTPd. Не е трудно, само 14 реда конфигурация е:
#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
В началото трябва да дефинираме външния интерфейс (external interface), таблици (tables), имена (aliases) и домейни (domains). След това ще отидем към SSL сертификата за домейна.
Ще проверим локалния хост (localhost) за примерния домейн – mail.example.com. След това ще прегледаме филтрираните spamd съобщения и тези от външни интерфейси.
И последно, ще видим тези на порт 587 и ще проверим автентичността им.
След това ще се преместим на настройките за приемане. Ще можем да приемаме съобщения от домейните в нашата таблица „Домейни“ и те ще бъдат доставени до нашата директория maildir (home directory). Ще приемаме всички локални връзки за локалните пощенски кутии и ще ги прекарваме през реле, за да можем да изпратим имейли.
В FreeBSD по подразбиране има файл с имена alias file /etc/mail/aliases с такъв формат:
vuser1: user1
vuser2: user1
vuser3: user1
vuser4: user2
Това ще са нашите пощенски кутии. Ще създадем локални потребители, които ще имат пощенски кутии на сървъра.
Да създадем файл за домейните на FreeBSD не е трудно:
# Domains
example.com
mail.example.com
smtp.example.com
Това е прост текстови файл, който ще поставите на нова линия от текста. Символът “#” е за вас, за да оставите коментар.
Ще използвате подписани от вас сертификати или подписани от други организации. Може да използвате Let’s Encrypt, за да се сдобиете с безплатен сертификат.
Нека да запишем програмата certbot.
sudo pkg install py-certbot
След това отивате на вашите сертификати, като преди това се уверите, че порт 80 е отворен. Към вашите правила за филтриране добавете този ред в /usr/local/etc/pf.conf:
pass quick on $ext_if from any to any port http
След това стартирайте pfctl -f /usr/local/etc/pf.conf, за да презаредите правилата.
Сега стартирайте командата за всички домейни, за които искате да имате сертификати:
certbot certonly --standalone -d mail.example.com
В този случай създаваме за mail.example.com. Вие можете да направите така, че crontab да включва certbot веднъж на 6 месеца и да подновява сертификата, за да е валиден винаги.
След това за всички други домейни, които са свързани с целта, може да редактирате няколко реда текст и да насочите към правилния ключ:
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“
Редактирайте защитите:
sudo chmod 700 /usr/local/etc/letsencrypt/archive/mail.example.com/*
Ще трябва да направите това за всеки оригинален ключов файл или иначе OpenSMTPd няма да ги отвори.
След това може да стартираме услугата:
sudo service smtpd start
Ще ползваме spamd, за да спрем някои спам източници с техните източници, за които се знае, че са извор на спам съобщения. Ще поставим връзките в сив списък (greylist), така че всяко ново устройство, което все още не е в нашия черен списък, да получи съобщение за грешка. Спам изпращачите няма да се опитат да изпратят на ново съобщението след грешка, докато нормалните хора ще опитат.
Изпълнете следната команда за прикачване на fdescfs:
mount -t fdescfs null /dev/fd
Добавете реда към /etc/fstab:
fdescfs /dev/fd fdescfs rw 0 0
Основния файл за конфигурация (/usr/local/etc/spamd/spamd.conf.sample) ще работи нормално. Може да го редактирате, за да добавите нови източници:
sudo cp /usr/local/etc/spamd/spamd.conf.sample /usr/local/etc/spamd/spamd.conf
Сега стартирайте услугата със следната команда:
sudo service obspamd start
Spamd вече е готов за работа.
Един проблем, който методът на сивия списък притежава е, че големите уеб мейл доставчици (като Google) изпращат имейли от различни сървъри. Трябва да позволим диапазон от IP адреси специално за тези уеб услуги. Това е частта webmail таблица в PF конфигурацията.
За да добавим диапазон от IP адреси в webmail таблицата, може да използвате следната команда:
pfctl -t webmail -T add 192.0.2.0/24
Ако искате потребителите да имат по-удобен достъп, ще ви трябва MDA с IPAM/POP3 поддръжка. Избрали сме Dovecot в нашия случай, защото е лесен за конфигуриране софтуер.
Копирайте конфигурацията по подразбиране:
cd /usr/local/etc/dovecot
cp -R example-config/* ./
Конфигурацията е направена от няколко различни файла. За да видите разликите между вашата конфигурация и тази на dovecot по подразбиране, използвайте тази команда:
sudo doveconf -n
Вижте този пример за конфигурация:
# 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
}
Повечето конфигурационни файлове са в conf.d.
Важните файлове са 10-auth.conf, 10-mail.conf и 10-ssl.conf.
Може да настроите различните пощенски кутии за различните потребители от 15-mailboxes.conf. Тази конфигурация работи отлично за повечето хора, но вие може да я модифицирате за конкретните ви нужди.
Повечето настройки по подразбиране ще са правилните. Ако искате да използвате системните потребители за удостоверение, ще трябва да редактирате 10-auth.conf.
Премахнете коментара на следния ред:
!include auth-system.conf.ext
Ще трябва да генерираме Diffie-Hellman параметри:
sudo nohup openssl dhparam -out /usr/local/etc/dovecot/dh.pem
Бележка: Командата ще отнеме време. Повече от очакваното.
След като е готова може да стартирате Dovecot:
sudo service dovecot start
Вече имате напълно функционален, безопасен и със спам защита имейл сървър на FreeBSD OS. Допълнително може да намалите спама с допълнителен софтуер, но тази конфигурация ще е достатъчна за повечето организации.
Ако имате нужда от друг вид мейл сървър, погледнете следната статия:
… [Trackback]
[…] Read More here on that Topic: blog.neterra.cloud/bg/izgrazhdane-na-sobstven-imeyl-sarvar-na-freebsd/ […]
… [Trackback]
[…] Find More Info here on that Topic: blog.neterra.cloud/bg/izgrazhdane-na-sobstven-imeyl-sarvar-na-freebsd/ […]
… [Trackback]
[…] Here you will find 81152 additional Information on that Topic: blog.neterra.cloud/bg/izgrazhdane-na-sobstven-imeyl-sarvar-na-freebsd/ […]
… [Trackback]
[…] Read More here on that Topic: blog.neterra.cloud/bg/izgrazhdane-na-sobstven-imeyl-sarvar-na-freebsd/ […]
… [Trackback]
[…] There you can find 71375 additional Information to that Topic: blog.neterra.cloud/bg/izgrazhdane-na-sobstven-imeyl-sarvar-na-freebsd/ […]
… [Trackback]
[…] Find More on that Topic: blog.neterra.cloud/bg/izgrazhdane-na-sobstven-imeyl-sarvar-na-freebsd/ […]
… [Trackback]
[…] Read More Information here to that Topic: blog.neterra.cloud/bg/izgrazhdane-na-sobstven-imeyl-sarvar-na-freebsd/ […]
… [Trackback]
[…] Here you can find 72349 more Information on that Topic: blog.neterra.cloud/bg/izgrazhdane-na-sobstven-imeyl-sarvar-na-freebsd/ […]
social signals seo 2015
rdctxphrs kkthu yrwhlhk mswl onsosfkoqvnmkhf