RSS
 

Posts Tagged ‘хозяйке на заметку’

Хозяйке на заметку: Postfix SMTP Auth и соответствие envelope-from

28 мая

Для пользователей, которые успешно авторизовались с помощью SMTP Auth (логин типа vasya@domain), мы разрешаем отсылать письма через наш почтовый сервер с любого IP-адреса (то есть поддерживаем roaming users). В определенный момент мы натолкнулись на неприятный случай – у одного клиента был украден/заснифлен его логин-пароль и с нескольких IP-адресов была массированная рассылка спама. При этом, так как клиент “представился”, ему было позволено указывать любой envelope-from, чем и воспользовались спаммеры. Ситуация расстроила, адреса зафильтровали, клиентский логин/пароль заблокировали, но нужно было что-то решать в комплексе – для авторизованных клиентов разрешать использование envelope-from, соответствующий их логину.

В postfix есть возможность указать ограничение reject_sender_login_mismatch, при использовании которого производится проверка в таблице smtpd_sender_login_maps соответствия логина и MAIL FROM. Но тут возникает другой момент – для тысяч почтовых ящиков генерировать такую таблицу можно, но это потребует напильника в postfixadmin, который используется для управления аккаунтами клиентов. Немного посоображав, была реализована следующая грубая, но работающая схема с помощью mysql maps: описываем таблицу в main.cf:

smtpd_sender_login_maps         = mysql:/usr/local/etc/postfix/sql/mysql_authentificated_users.cf

Сам mysql_authentificated_users.cf прост до безобразия:

user = mysql_username
password = mysql_password
hosts = database_host
dbname = database_name
query          = SELECT '%s'

Не забываем в main.cf указать, чтобы те, кто используют несовпадающий envelope-from, получали reject:

smtpd_sender_restrictions =
reject_authenticated_sender_login_mismatch
permit

Вот такая история из цикла “неэлегантно, но практично” :)

 

Хозяйке на заметку: FreeBSD и большие массивы

27 мая

Если вам придется поднимать под FreeBSD большой дисковый массив (более 2Тб – созданный, например, с помощью RAID-контроллера), случится несколько неприятный момент. fdisk и disklabel не умеют корректно работать с подобным объемом и вместо, скажем, 3Тб (2 диска по 1.5Тб в STRIPE) вы получите несколько поменьше:

iptvts2# df -g /mnt
Filesystem    1G-blocks Used Avail Capacity  Mounted on
/dev/aacd0s1d       718    0   661     0%    /mnt

Если такое случилось, паниковать не нужно. Во-первых, жестоко уничтожаем информацию о разделах на диске с помощью универсального способа – dd(1):


iptvts2# dd if=/dev/zero of=/dev/aacd0 bs=1k count=500
500+0 records in
500+0 records out
512000 bytes transferred in 0.026223 secs (19524886 bytes/sec)

Затем используем glabel(8) для создания метки:


iptvts2# glabel label timeshift1 /dev/aacd0
iptvts2# glabel list
Geom name: aacd0
Providers:
1. Name: label/timeshift1
Mediasize: 2995729202688 (2.7T)
Sectorsize: 512
Mode: r0w0e0
secoffset: 0
offset: 0
seclength: 5851033599
length: 2995729202688
index: 0
Consumers:
1. Name: aacd0
Mediasize: 2995729203200 (2.7T)
Sectorsize: 512
Mode: r0w0e0

Вот и все. Теперь можно делать newfs(8) на /dev/label/timeshift1 и пользоваться массивом.