![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
SMTP вітання
Розважаючи себе переписуванням SOHO конфіґурації Exim, якщо це можна назвати розвагою, я поцікавився навіщо гаю час на Exim, коли допевне мають бути ольтернативи.
Років 20 тому ця галузь консалтинґу вирувала разом зі великою всесвітньою боротьбою проти спаму, але з того часу вояцький запал помітно вщух, а SOHO сервери поштові залишилися лише ув гротескних параноїків чи контрольних фріків.
Як вірити вікіпідіа (я не вірю), бійка поміж postfix та exim триває досі, де обидва разом мають маркетову частку ув ~92%. Обидва знаходяться ув непевному стані на межі занедбаності: 1й відрізняється відсутністю публічного ріпо; зміст вікі 2го нагадує покинуті військові бази або таймкапсулу з 2002 року. Обидва мають по 1му регулярному комітеру.
92%?
Перевірити який саме сервер поштовий використовує нарід можна просто відкривши tcp сокета і прочитавши (зазвичай) 1 рядок, який сервер надішле. RFC 5321 не вимагає друкувати ім'я, лише код відповіді зі своїм доменом, тому цей тест не завжди є корисний.
(Навіщо залишають ім'я та версію ув рядку вітання, я не зовсім розумію, напевно щоб русскім та північним корейцям було легше підбирати вразливості.)
$ dig mx apple.com +short | head -1
20 mx-in-vib.apple.com.
$ timeout 2 ncat mx-in-vib.apple.com 25
220 vib-mx02.apple.com -- Server ESMTP (Oracle Communications Messaging Server 8.1.0.27.20250130 64bit (built Jan 30 2025))
Я спитав ув Ґрока за популярні уйоб-сайти, але добрий шмат зі того списку використовує гооглівську хмару. Наприклад, 40 штук для України:
$ xargs ./smtp-banner.sh < top_websites_ukraine.txt | tee ua.txt
112.ua 220-mx2.myservices.email ESMTP Postfix (Debian/GNU)
nv.ua 220 mx.nv.ua ESMTP MailCleaner (Community Edition 0-da47da2) Wed, 30 Jul 2025 15:40:51 +0300
tsn.ua 220 ironport2.1plus1.net ESMTP
suspilne.media 220 DU6PEPF0000A7E2.mail.protection.outlook.com Microsoft ESMTP MAIL Service ready at Wed, 30 Jul 2025 12:45:23 +0000 [08DDCC7178A4D2A2]
ukr.net 220 2.0.0 UKR.NET ESMTP Wed, 30 Jul 2025 15:38:14 +0300 [un.20250730.wFQEzbLiXz8plF0C]
prom.ua 220-mail.uaprom.net ESMTP
youtube.com 220 mx.google.com ESMTP 38308e7fff4ca-331f409b92csi28321721fa.89 - gsmtp
google.com 220 mx.google.com ESMTP 38308e7fff4ca-331f4302005si28576861fa.422 - gsmtp
rozetka.com.ua 220 eva.rozetka.com.ua ESMTP Exim 4.98.2 Wed, 30 Jul 2025 15:38:14 +0300
sinoptik.ua 220 UKR.NET ESMTP Wed, 30 Jul 2025 15:38:14 +0300
wikipedia.org 220 mx-in1001.wikimedia.org ESMTP Postfix (Debian/GNU)
censor.net 220 mx.cloudflare.net Cloudflare Email ESMTP Service ready
uakino.best 220 uakino.me ESMTP Postfix (Debian/GNU)
gismeteo.ua 220 mx.google.com ESMTP 2adb3069b0e04-55b633bfa57si3094256e87.626 - gsmtp
x.com 220 mx.google.com ESMTP 2adb3069b0e04-55b63161bdasi3091803e87.68 - gsmtp
telegram.org 220 mx110.telegram.org ESMTP Postfix (Debian/GNU)
instagram.com 220 mx0b-00082601.pphosted.com ESMTP mfa-m0109332
obozrevatel.com 220 mail.obozrevatel.com ESMTP Exim 4.97.1 Wed, 30 Jul 2025 15:38:15 +0300
privatbank.ua 220 mx.google.com ESMTP d9443c01a7336-24022a2c33fsi83113735ad.210 - gsmtp
korrespondent.net 220 fr1.umh.ua ESMTP Exim 4.90_1 Wed, 30 Jul 2025 15:38:15 +0300
facebook.com 421 4.1.8 DNS-T2 Domain lookup failed https://www.facebook.com/postmaster/response_codes?ip=109.95.54.222#DNS-T2
segodnya.ua oopsie
pravda.com.ua 220 mx.google.com ESMTP d9443c01a7336-240837b0f6dsi29521265ad.390 - gsmtp
olx.ua 220 mx.google.com ESMTP d9443c01a7336-24076196724si35342125ad.184 - gsmtp
alerts.in.ua 220 mx.cloudflare.net Cloudflare Email ESMTP Service ready
epravda.com.ua 220 mx.google.com ESMTP 2adb3069b0e04-55b63374c7bsi3209840e87.411 - gsmtp
shafa.ua 220-mail.uaprom.net ESMTP
rbc.ua 220 mx.zohomail.com SMTP Server ready July 30, 2025 5:38:15 AM PDT
zoom.us 220 mx0b-00569201.pphosted.com ESMTP mfa-m0288579
netflix.com 220 mx.google.com ESMTP 38308e7fff4ca-331f42d90afsi28847841fa.324 - gsmtp
unian.ua 220 fiat.1plus1.net ESMTP
booking.com 220 mx07-0032a201.pphosted.com ESMTP mfa-m0176169
dou.ua 220 mx.google.com ESMTP 41be03b00d2f7-b42100b07ebsi3220280a12.1117 - gsmtp
zakupki.prom.ua 220-mail.uaprom.net ESMTP
znaj.ua 220 mx.cloudflare.net Cloudflare Email ESMTP Service ready
kyivpost.com 220 mx.google.com ESMTP 41be03b00d2f7-b3f7f73b516si9642287a12.729 - gsmtp
sport.ua 220 mx.google.com ESMTP 41be03b00d2f7-b421518e194si2403306a12.701 - gsmtp
lun.ua 220 mx.google.com ESMTP 98e67ed59e1d1-31f63dc06e0si1846146a91.45 - gsmtp
work.ua 220 mail.work.ua ESMTP Exim 4.96 Wed, 30 Jul 2025 15:38:18 +0300
aliexpress.com 220 mx1.aliyun-inc.com MX AliMail Server
Сортування є випадкове, т.я. скрипта робить конкурентні ріквести. Фасебоок огризається, тому що домашній ойпі у мене не має PTR рекорду.
Без поняття, наскільки ці данні є релевантні.
$ grep -ic exim ua.txt
4
$ grep -ic postfix ua.txt
4
$ grep -ic gsmtp ua.txt # гоогл
13
Лайнаксний скрипта замість ncat'у використовує башівські віртуальні /dev/tcp файли:
#!/usr/bin/env bash
# shellcheck disable=SC3040
set -o pipefail
banner() {
dig MX "${1:?no domain}" +short | awk '{print $NF}' | sort -R | head -1 |
grep . | {
server=`cat`; [ "$server" ] || exit 1
MODE=connect timeout 5 "$0" "$server"
}
}
read_1_line() {
{ exec 3<> "/dev/tcp/$1/25"; } 2>/dev/null || return 1
read -r line <&3
exec 3<&-
echo "$line"
}
fmt() { tr -d \\r | tr \\n \\0 | xargs -0 printf '%-25s %s\n' "$1"; }
type dig nproc timeout > /dev/null || exit 1
[ "$1" ] || { echo Usage "$0" example.com ... 1>&2; exit 1; }
case "$MODE" in
connect) read_1_line "$1" ;;
banner) { banner "$1" || echo oopsie; } | fmt "$1" ;;
*)
export MODE=banner
echo "$@" | xargs -P"`nproc`" -n1 "$0"
esac