Изучение 26 методов анализа больших данных: часть 1
Изучение 26 методов анализа больших данных: часть 1
Запуск вашего собственного почтового сервера может быть весьма полезным. Вы отвечаете за свои данные. Это также дает вам больше гибкости с вашими вариантами доставки. Однако есть несколько проблем. Вы рискуете открыть свой сервер для уязвимостей, а также сделать свой сервер потенциальным релеем для использования спаммерами.
После этого давайте перейдем к запуску нашего собственного почтового сервера.
Для установки требуется три части программного обеспечения, которые не включены в базовую систему FreeBSD:
OpenSMTPd - агент передачи почты (MTA) и агент доставки почты (MDA). Это означает, что он может связываться с другими почтовыми серверами по SMTP
протоколу, а также обрабатывать доставку почты в почтовые ящики отдельных пользователей. Мы будем настраивать OpenSMTPd, чтобы он мог взаимодействовать с внешними серверами (фильтруется через spamd) и доставлять почту локальным пользователям, а также доставлять локальную почту от пользователя к пользователю.
Dovecot - это MDA, который читает локальные почтовые ящики и передает их пользователям по IMAP или POP3. Он будет использовать почтовые ящики локальных пользователей для обслуживания этого контента.
Spamd - сервис фильтрации почты. Мы можем пересылать почту через spamd, и она будет фильтровать почту на основе множества черных, белых и серых списков.
Общая идея для этого почтового сервера требует нескольких разных путей:
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)
Для этого урока мы будем использовать версию FreeBSD PF OpenBSD для нашего брандмауэра. Вы также можете использовать ipfw
, где конфигурация очень похожа.
Примечание. По умолчанию Vultr блокирует порт 25, который везде используется SMTP-серверами. Если вы хотите запустить полнофункциональный почтовый сервер, вам нужно будет открыть этот порт.
Для начала нам нужно установить необходимые программы.
Предполагая, что вы работаете как пользователь с настроенным доступом sudo, мы можем запустить следующие команды. Они будут различаться в зависимости от того, используете ли вы порты или пакеты.
Если вам не нужны специальные функции, встроенные в эти утилиты, рекомендуется устанавливать их с помощью пакетов. Это проще, занимает меньше серверного времени и ресурсов и обеспечивает интуитивно понятный, удобный интерфейс.
sudo pkg install opensmtpd dovecot spamd
Следующие make
команды предоставят вам множество опций компиляции, значения по умолчанию будут работать нормально. Не меняйте их, если вы точно не знаете, что делаете.
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
Нам нужно будет добавить следующие строки /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, мы можем создать наш /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
Это рабочая конфигурация PF. Это относительно просто, но есть несколько причуд, которые также нужно объяснить.
Во-первых, мы определяем нашу $ext_if
переменную для нашего vtnet0
устройства для последующего использования. Мы также определяем недопустимые IP-адреса, которые должны быть удалены на внешнем интерфейсе.
Мы также определяем две таблицы, spamd
и spamd-white
- эти две таблицы создаются spamd в конфигурации по умолчанию. Кроме того, мы определяем таблицу с именем, webmail
которую мы будем использовать, чтобы пропустить через нее некоторых крупных поставщиков веб-почты.
Чтобы просмотреть таблицу, вы можете использовать команду pfctl -t tablename -T show
для вывода списка элементов в таблице.
Мы установили несколько правил PF: пропустить обработку на локальном интерфейсе, включить статистику на внешнем интерфейсе и очистить входящие пакеты.
Далее идет одна из наиболее важных частей, где мы управляем отправкой нашего трафика через spamd или OpenSMTPd.
Прежде всего, это правило перенаправления (обратите внимание на синтаксис здесь, FreeBSD 11 использует синтаксис PF старого стиля (pre-OpenBSD 4.6), поэтому синтаксис может показаться странным. Если мы получим что-нибудь по smtp от хоста, указанн��го в spamd
таблице или не указанного в spamd-white
стол, мы перенаправлять соединение через к spamd демона, который имеет дело с этими соединениями. следующие три правила являются PASSTHROUGH правила , так что мы можем реально получать почту. мы проходим через сообщения из IP - адресов , перечисленных в spamd-white
и webmail
таблицах прямо через OpenSMTPd. Также мы принимаем сообщения через порт отправки ( 587
).
Затем есть несколько правил обслуживания, которые устанавливают нашу политику по умолчанию и принимают сообщения SSH и ICMP.
Затем мы передаем IMAP и POP3 через наш внешний интерфейс для доступа к Dovecot.
Наконец мы разрешаем весь исходящий трафик. Если вы хотите добавить дополнительную безопасность, вы можете ограничить количество передаваемых вами портов, но для одноразового сервера пройти все не проблема.
Начать ПФ:
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
Во-первых, мы снова определяем наш внешний интерфейс, а также несколько таблиц, псевдонимов и доменов. Затем мы переходим к ключу SSL и сертификату для любых доменов, под которыми мы хотим обрабатывать почту.
В следующем разделе мы определим интерфейсы и порты, которые мы хотим прослушивать. Во-первых, мы прослушиваем localhost для нашего mail.example.com
домена, для любых локальных соединений. Затем мы прослушиваем наши спам-фильтрованные сообщения и отправляем сообщения на внешний интерфейс. Наконец, мы прислушиваемся к представлениям, они происходят через порт, 587
и мы требуем, чтобы они проходили аутентификацию по соображениям безопасности.
Наконец, наши accept
настройки. Мы принимаем любое сообщение для любого из наших доменов, определенных в нашей domains
таблице, для псевдонимов в нашей aliases
таблице, чтобы доставить их в домашний каталог в maildir
формате. Затем мы принимаем все локальные соединения для локальных почтовых ящиков и ретранслируем наши сообщения, чтобы мы могли отправлять электронную почту. Наконец, мы принимаем отправленные нами сообщения для ретрансляции. Если бы мы не требовали аутентификацию для нашего порта отправки, это было бы большой угрозой безопасности. Это позволило бы любому использовать наш сервер в качестве спам-реле.
FreeBSD поставляется с файлом псевдонимов по умолчанию /etc/mail/aliases
в следующем формате:
vuser1: user1
vuser2: user1
vuser3: user1
vuser4: user2
Это определяет различные почтовые ящики и куда мы хотим пересылать сообщения, отправленные на эти определенные почтовые ящики. Мы можем определить наших пользователей как локальных системных пользователей или внешние почтовые ящики для пересылки. Файл FreeBSD по умолчанию довольно описательный, поэтому вы можете обратиться к нему для справки.
FreeBSD не предоставляет файл доменов по умолчанию, но это невероятно просто:
# Domains
example.com
mail.example.com
smtp.example.com
Это просто текстовый файл с каждым доменом, который вы хотите прослушать в новой строке. Вы можете оставить комментарий, используя #
символ. Этот файл существует просто для того, чтобы вы могли использовать меньше строк конфигурации.
Существует два способа обеспечить безопасность связи с почтовым сервером: самоподписанные и подписанные сертификаты. Конечно, можно подписать сертификаты самостоятельно, однако такие сервисы, как Let's Encrypt, предоставляют бесплатную и невероятно простую в использовании подпись.
Сначала мы должны установить программу certbot.
sudo pkg install py-certbot
Кроме того, он может быть установлен с портами:
cd /usr/ports/security/py-certbot
make install
make clean
Затем, чтобы получить сертификат, вам нужно убедиться, что вы открыли порт 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
Рекомендуется настроить запись в crontab так, чтобы она запускалась certbot renew
раз в 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 в OpenBSD, чтобы уменьшить количество спама, получаемого из Интернета. По сути, это отфильтровывает сообщения с IP-адресов, которые известны как плохие, из различных источников спама, а также (по умолчанию) «серые» входящие соединения. Spamd также пытается тратить время спама, «заикаясь» в черный и черный списки соединений, что означает, что он распространяет свой ответ в течение нескольких секунд, что заставляет клиента оставаться открытым дольше, чем обычно.
Создание серого списка соединения выполняется, когда подключается любой новый IP-адрес, которого нет ни в черном, ни в белом списке. После подключения нового адреса spamd удаляет сообщение с безобидным сообщением об ошибке, а затем добавляет его во временный список. Поскольку спамерам платят за доставленные сообщения, они не попытаются повторить ошибку, тогда как законная служба повторит попытку относительно скоро.
Вам нужно выполнить следующее для монтирования 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 настроен.
Одна проблема с подходом «серых списков» заключается в том, что крупные почтовые службы часто отправляют почту через одну из множества разных спул, и вы не гарантируете, что один и тот же сервер будет отправлять сообщение каждый раз. Одним из решений этой проблемы является внесение в белый список диапазонов IP-адресов, используемых различными службами веб-почты. Это то, для чего используется таблица веб-почты в конфигурации PF. Эта стратегия может иметь неприятные последствия, если вы включите IP-адрес, который использует спамер, но если вы будете осторожны с теми диапазонами, которые вы указали в таблице, у вас все будет хорошо.
Чтобы добавить диапазон адресов электронной почты в таблицу веб-почты, вы можете выполнить следующую команду:
pfctl -t webmail -T add 192.0.2.0/24
Если вы хотите, чтобы пользователи имели доступ к своей почте без входа в систему через SSH, вам понадобится MDA, поддерживающий IMAP и / или 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
.
Раскомментируйте следующую строку:
! включить auth-system.conf.ext
Мы должны сгенерировать параметры Диффи-Хеллмана:
sudo nohup openssl dhparam -out /usr/local/etc/dovecot/dh.pem
Примечание: это займет много времени для запуска. Намного дольше, чем вы могли ожидать.
Теперь мы можем запустить Dovecot:
sudo service dovecot start
На данный момент у нас есть функциональный, безопасный и относительно свободный от спама почтовый сервер.
Здесь есть еще кое-что, что можно использовать, используя SpamAssassin для эвристического избавления от спама, а также находя больше черных списков спама, опубликованных источниками, которым вы доверяете.
Изучение 26 методов анализа больших данных: часть 1
Многие из вас знают Switch, который выйдет в марте 2017 года, и его новые функции. Для тех, кто не знает, мы подготовили список функций, которые делают «Switch» обязательным гаджетом.
Вы ждете, когда технологические гиганты выполнят свои обещания? проверить, что осталось недоставленным.
Прочтите блог, чтобы узнать о различных уровнях архитектуры больших данных и их функциях самым простым способом.
Прочтите это, чтобы узнать, как искусственный интеллект становится популярным среди небольших компаний и как он увеличивает вероятность их роста и дает преимущество перед конкурентами.
CAPTCHA стало довольно сложно решать пользователям за последние несколько лет. Сможет ли он оставаться эффективным в обнаружении спама и ботов в ближайшем будущем?
По мере того, как наука развивается быстрыми темпами, принимая на себя большую часть наших усилий, также возрастает риск подвергнуться необъяснимой сингулярности. Прочтите, что может значить для нас необычность.
Что такое телемедицина, дистанционное здравоохранение и их влияние на будущее поколение? Это хорошее место или нет в ситуации пандемии? Прочтите блог, чтобы узнать мнение!
Возможно, вы слышали, что хакеры зарабатывают много денег, но задумывались ли вы когда-нибудь о том, как они зарабатывают такие деньги? Давайте обсудим.
Недавно Apple выпустила macOS Catalina 10.15.4, дополнительное обновление для исправления проблем, но похоже, что это обновление вызывает больше проблем, приводящих к поломке компьютеров Mac. Прочтите эту статью, чтобы узнать больше