Postfix & обрьба со спамом
8 июля 2009 г.Спам достал!!! 90% всей корреспонденции получаемой по электронной почте это спам!!! Больше так продолжаться не может. Внимательно прочитав о smtpd_recipient_restrictions, ознакомившись с Fighting Spam и почитав форум www.postfix.ru, мы настроили конфиг постфикса следующим образом:
smtpd_recipient_restrictions =check_sender_access hash:/etc/postfix/access_vip_sender,permit_mynetworks,permit_sasl_authenticated,reject_non_fqdn_sender,reject_unknown_sender_domain,reject_unknown_client,reject_unauth_destination,reject_invalid_hostname,reject_unknown_recipient_domain,reject_unauth_pipelining,reject_rbl_client zen.spamhaus.org,reject_rbl_client hostkarma.junkemailfilter.com=127.0.0.2,reject_rbl_client l2.apews.org,reject_rbl_client sbl-xbl.spamhaus.org,reject_rbl_client dnsbl.njabl.org,reject_rbl_client bl.spamcop.net,reject_rbl_client intercept.datapacket.net,reject_rbl_client bl.spamcannibal.org,reject_rbl_client dnsbl-1.uceprotect.net,reject_rhsbl_sender zen.spamhaus.org,reject_rhsbl_sender l2.apews.org
файл access_vip sender:
# содержит e-mail адреса или домены клиентов,# от которых нужно получать почту в любом случаеdomain.ua OKuser@yandex.ru OK
не забываем создать access_vip sender.db программой postmap
Теперь спама ЗНАЧИТЕЛЬНО убавилось!
Unique Values for Mail Attributes
9 июня 2009 г.Мы настроили почтовую систему Postfix–Dovecot–Sun Directory Server. Теперь нужно сделать чтобы атрибуты:
-
mail
-
mailAlternateAddress
-
mailEquivalentAddress
были уникальными. Воспользуемся руководством Sun Java System Delegated Administrator 6.4 Administration Guide. Нам нужно создать плагин, который и будет проверять уникальность требуемых атрибутов. Создадим файл mail uniq.ldif следующего содержания:
dn: cn=mail uniqueness,cn=plugins,cn=configobjectClass: topobjectClass: nsSlapdPluginobjectClass: extensibleObjectcn: mail uniquenessnssldap-pluginPath: /opt/sun/lib/uid-plugin.sonsslapd-pluginInitfunc: NSUniqueAttrSet_Initnsslapd-pluginType: preoperationnsslapd-pluginEnabled: onnsslapd-pluginarg0: attributeset=mail,mailalternateaddress,mailequivalentaddressnsslapd-pluginarg1: dc=dn,dc=localnsslapd-plugin-depends-on-type: databasensslapd-pluginId: NSUniqueAttrSetnsslapd-pluginVersion: 5.2nsslapd-pluginVendor: Sun Microsystems, Inc.nsslapd-pluginDescription: Enforce unique values among an attribute set
и выполняем следующую команду:
[root@ldap /]# ldapmodify -x -h ldap -p 389 -D "cn=Directory Manager" -w pasword -f mail uniq.ldif
Перезапускаем сервер slapd. Если при старте сервера не выдало ошибок, значит плагин установился. В консоли управления можно посмотреть наши результаты…
PostFix & Dynamic Group
22 мая 2009 г.После настройки почтовика описанного в этом посте, стало возможным осуществить “старую мечту” :) – рассылку сообщений ВСЕМ пользователям. Для этого нужно:
- создать в Sun Directory группу, прописать в атрибуте “mail” – электронный адрес для группы и в атрибуте “memberurl” следующий запрос:
ldap:///dc=dn,dc=local??sub?(&(objectclass=person)(mail=*)(!(nsAccountLock=true)))
запрос будет выбирать пользователей у которых присутствует атрибут “mail” и учетная запись не отключена
2. подправим наш ldap-groups-sun.cf добавив к переменой special_result_attribute memberurl и получился конфиг:
server_host = sunldap.dn.localsearch_base = ou=People,dc=dn,dc=localversion = 3query_filter = (&(objectclass=groupOfUniqueNames)(|(mailAlternateAddress=%s)(mail=%s)))leaf_result_attribute = mailresult_attribute = mailspecial_result_attribute = uniqueMember, memberurlbind = yesbind_dn = uid=ldap,dc=dn,dc=localbind_pw = password
Ну и конечно в Postfix с помощью restriction_classes ограничить доступ на этот адрес.
Postfix-Dovecot-Sun Direcory Server
21 мая 2009 г.Была поставлена задача создать почтовую систему и связать ее с Active Directory, но если служба каталогов не будет доступна по какой-то причине, пользователям не будет доставляться почта. И мы решили развернуть еще одну службу каталогов. Выбор остановили на SUN ONE Directory Server. Он бесплатный, документация отличная и что немало важно управлять ним можно через WEB или java консоль, а синхронизировать Active Direcory и Sun Direcory мы будем с помощью ILM 2007 (Microsoft Identity Lifecycle Manager).
Postfix - Active Directory - Dovecot
6 мая 2009 г.И так было решено связать Postfix с AD и Dovecot с AD. Я не буду останавливаться на описании сборке дистрибутивов, скажу только что нужно собрать из с поддержкой LDAP.
rpm пакеты Postfix-a для RH Enterprise Linux с поддержкой LDAP, pcre, mysql, SMTP AUTH (SASL) and TLS есть тут
Postfix:
Все пользователи у нас в присутствуют в AD и вся почта у нас будет принадлежать одному пользователю vmail(uid=800,gid=800) в первую очередь создаем его с домашней директорией /home/vmail
Теперь в конфиге postfix-a main.cf добавляем
virtual_mailbox_domains = $mydomainvirtual_mailbox_base = /home/vmail/virtual_uid_maps = static:800virtual_gid_maps = static:800virtual_transport = virtualvirtual_create_maildirsize = yesvirtual_mailbox_maps = ldap:/etc/postfix/ldap-users.cfvirtual_alias_maps = ldap:/etc/postfix/ldap-groups.cfvirtual_mailbox_limit_override = yesvirtual_mailbox_limit_maps = hash:/etc/postfix/vquota
из переменной mydestination нужно удалить домен который прописан в
mydomain, иначе будет выдавать ошибку при отправке письма
Recipient address rejected: User unknown in virtual mailbox table
Теперь о ldap-users.cf:
server_host = ldap://dc1.dn.localldap://dc2.dn.localsearch_base = dc=dn,dc=localversion = 3query_filter = (&(objectclass=person)(mail=%s))(!(userAccountControl=514)))result_attribute = sAMAccountNameresult_format = %s/Maildir/bind = yesbind_dn = postfix_ldap@dn.localbind_pw = password
Фильтр выбирает пользователя если у него заполнено поле Эл. почта и учетная запись не отключена, а также указываем что домашняя директория для этого пользователя sAMAccountName/Maildir
Проверим как это работает, выполним:
postmap -q test@mail.domain ldap:/etc/postfix/ldap-users.cf
если все нормально получим ответ:
Tets-User/Maildir/
Я решил использовать sAMAccountName для определения домашнего каталога пользователя, так как e-mail у пользователя может быть не один а почту нужно складывать в один каталог. Но об этом попозже.
ldap-groups.cf:
server_host = ldap://dc1.dn.localldap://dc2.dn.localsearch_base = dc=dn,dc=localversion = 3query_filter = (&(objectclass=group)(mail=%s))leaf_result_attribute = mailresult_attribute = mailspecial_result_attribute = memberbind = yesbind_dn = postfix_ldap@dn.localbind_pw = password
Проверяем
postmap -q test-gr@mail.domain ldap:/etc/postfix/ldap-users.cf
и получим в ответ эл. адреса всех пользователей, кто является членом этой группы.
О квотах на почтовые ящики есть хорошая статья
Dovecot:
dovecot.conf
protocols = pop3listen = *ssl_disable = yesdisable_plaintext_auth=nomail_location = maildir:~/Maildirmail_access_groups = vmailprotocol pop3 {pop3_uidl_format = %08Xu%08Xvpop3_client_workarounds = outlook-no-nuls oe-ns-eoh}auth_cache_size = 1024auth_username_format = %Lumail_uid=800mail_gid=800auth_ntlm_use_winbind = yesauth_winbind_helper_path = /usr/bin/ntlm_authauth default {mechanisms = plain login ntlmpassdb pam {args = dovecot}userdb ldap {args = /etc/dovecot-ldap.cf}}
О PAM Authentication отлично написано тут
dovecot-ldap.cf
uris = ldap://dn.localbase = dc=dn,DC=localdn = CN=postfix_ldap,OU=Account,DC=dn,DC=localdnpass=passwordldap_version = 3auth_bind = yesderef = neverscope=subtreeuser_filter = (&(objectClass=Person)(sAMAccountName=%n)(!(userAccountControl=514)))user_attrs = sAMAccountName=home=/home/vmail/%$
user_attrs – мы указали домашний каталог аналогично как у postfix.
Так сложилось что у меня 2-ва равноправных внешних домена, и почту доставлять для второго тоже нужно. Адрес второго домена мы пропишем в атрибут otherMailbox . Далее мы добавим в main.cf к переменной virtual_mailbox_domains еще один домен:
virtual_mailbox_domains = $mydomain, mail.doman2.
В /etc/postfix/ldap-users.cf меняем query_filter на
query_filter = (&(objectclass=person)(|(mail=%s)(otherMailbox=%s))(!(userAccountControl=514)))
Вот и все.
Как сделать чтобы второй домен автоматом прописывался в otherMailbox читаем тут.
----------------------------------