Postfix

Материал из Belgorod Linux User Group - Белгород

Перейти к: навигация, поиск

Содержание

Локальные учетные записи

aliases

Для пересылки почты встроенных учетных записей служит файл /etc/mail/aliases

Записи там хранятся так:

root:           /dev/null
info:           user
blug:           user
admin:          user
user:           pupkin@myhost.com

После редактирования - команда

newaliases


Прием почты

myhosname

Директива устанавливает имя почтового домена, на который postfix будет принимать внешнюю почту.

myhostname = belgorod.lug.ru

Защита от спама

address_verify_sender = <>
smtpd_helo_required = yes
smtpd_recipient_restrictions =
   # host check's:
   reject_unknown_client,
   # HELO check's:
   reject_invalid_hostname,
   reject_non_fqdn_hostname,
   reject_unknown_hostname,
   # MAIL FROM check's:
   reject_non_fqdn_sender,
   reject_unknown_sender_domain,
   reject_unverified_sender,
   # RCPT TO check's:
   reject_non_fqdn_recipient,
   reject_unauth_pipelining,
   reject_unauth_destination,
   reject_unlisted_recipient,
   permit


Отправка

relayhost

Чтобы отправлять почту через внешний шлюз - необходимо указать параметр relayhost в конфиге main.cf

relayhost = 172.22.1.5

sender_cannonical

Для отправки писем от другого адресата необходимо сделать подмену исходящих адресов. Для этого проделываются следующие шаги:


  • Создаем sender_cannonical файл и хешь-файл к нему:
cd /etc/postfix
cat > sender_canonical <<EOF
apache info@mymail.com
user info@mymail.com
root info@mymail.com
EOF
postmap sender_canonical


  • Прописываем его в конфиг main.cf
sender_canonical_maps = hash:/etc/postfix/sender_canonical


virtual

Для обслуживания нескольких почтовых имен доменов, а так же для пересылки почты транзитом на другой адрес используем virtual

  • Создаем файл и хешь к нему:
cd /etc/postfix
cat > virtual <<EOF
admin@belgorod.homelinux.org user
pupkin@belgorod.lug.ru pupkin@mymailmail.com
EOF
postmap virtual
  • Прописываем в конфиг main.cf
virtual_alias_domains = belgorod.homelinux.org belgorod.lug.ru
virtual_alias_maps = hash:/etc/postfix/virtual

регулярное выражение

Если надо пересылать почту на другой адрес. К примеру слушать mymail.com и перенаправлять на @newmail.su Создаем файл правил регулярного выражения:

cat > /etc/postfix/pcre_aliases <<"EOF"
/^(.*)@mymail\.com$/ ${1}@newmail.su
EOF

Дописываем в конфиг:

myhostname=mymail.com
virtual_alias_maps = pcre:/etc/postfix/pcre_aliases

Перезапускаем

/etc/init.d/postfix reload

Проверяем

telnet ivt.su 25
HELO ivt.su
mail from: info@mymail.com
rcpt to: pupkin@mymail.com
DATA

test 123
.
QUIT

Смотрим в логи, должно пройти:

 to=<pupkin@newmail.su>, orig_to=<pupkin@newmail.su>, relay=smtp.gmail.com

gmail

Если надо пересылать через gmail:

Собираем с поддержкой sasl:

echo "mail-mta/postfix sasl" >> /etc/portage/package.use
emerge posfix

Вписываем в main.cf

relayhost = smtp.gmail.com:587

smtp_use_tls = yes
smtpd_sasl_auth_enable = no
smtp_sasl_auth_enable=yes

smtp_sasl_password_maps=hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options=noanonymous
smtp_sasl_tls_security_options = noanonymous

smtp_tls_loglevel = 1
smtpd_tls_auth_only = no


Создаем файл sasl_passwd

smtp.gmail.com:587 user@gmail.com:password

Желательно также настроить sender_cannonical, прописав туда подмену исходящего адреса как свой, от которого авторизуемся (в данном случаи info@ivt.su).

Применяем, перзапускаем

postmap sasl_passwd
/etc/init.d/postfix restart

Проверяем.

транспорт whitelist

Переправлять (отправлять) письма только разрешенным пользователям/доменам:

cat >transport <<EOF
friend.com :
* discard:
EOF
postmap transport

в main.cf добавить :

transport_maps = hash:/etc/postfix/transport


Шлюз

Релей (шлюз) для отправки только из доверенной подсети и со строго определенных адресов (чтобы пользователь не мог отправить от president@gov.ru и т.п.).

слушать только на локальных интерфейсах

inet_interfaces = localhost, 172.22.0.1, 10.10.10.1

доверенные подсети

mynetworks = 172.22.0.0/16, 10.10.10.0/24, 127.0.0.0/8

отвергать всех отправителей, кроме указанных в sender_access (формат access(5))

smtpd_sender_restrictions = reject_unknown_sender_domain, 
       check_sender_access hash:/etc/postfix/sender_access, 
       reject_unlisted_sender,
       reject

отвергать не свои подсети

smtpd_recipient_restrictions = permit_mynetworks, reject_unknown_sender_domain, reject_unauth_destination

Внимание! Тут указана избыточная безопасность (inet_intefaces, mynetworks, permit_mynetworks) - можно использовать один из них.

В самом файле:

cat sender_access
belgorod.lug.ru  OK

Затем

postmap sender_access
/etc/init.d/postfix reload


Очередь

Посмотреть очередь можно командой

mailq

Очистить всю очередь:

postsuper -d ALL
Личные инструменты