Postfix faq

Postfix FAQ

Postfix - це агент передачі повідомлень (MTA, message transport agent або mail transfer agent), який займається пересиланням за протоколом SMTP повідомлень від призначеного для користувача поштового агента (MUA, mail user agent), званого також поштовим клієнтом, до віддаленого сервера електронної пошти. MTA також приймає повідомлення від віддалених поштових серверів і пересилає їх іншим MTA або доставляє в локальні поштові скриньки. Переслав або доставивши повідомлення, Postfix закінчує свою роботу.

Postfix створювався як альтернатива Sendmail. Вважається, що Postfix швидше працює, легше в адмініструванні, більш безпечний і, що важливо, сумісний з Sendmail.

Як мені вирізати все вкладення при відправці листів до зовнішнього світу?

Реалізувати це завдання можна за допомогою програми altermime.

В даному прикладі використовувалася наступна версія altermime

Для початку пишемо невеликий скрипт.

Зберігаємо його наприклад під таким ім'ям /etc/postfix/filter/remove_attachments.sh

І виставляємо права на запуск

Тепер нам необхідно описати сам транспорт для фільтрації в файлі /etc/postfix/master.cf

Тепер описуємо політики фільтрації в файлі /etc/postfix/main.cf

Відправляємо всередині домену лист з вкладенням

Тепер спробуємо відправити лист з вкладенням в світ

Відправляємо всередині домену лист з вкладенням

Як позбутися від повідомлень виду - warning: dict_nis_init: NIS domain name not set - NIS lookups disabled

Як правило повідомлення з'являється якщо ви явно не задали значення параметра alias_maps і у вас на сервері не настроєна NIS (Network Information Service)

Як видно з висновку значення за замовчуванням містить посилання на карту типу nis. Щоб вирішити дану проблему досить вказати таке значення

І дати команду postfix перечитати конфігураційний файл

Як мені відкидати з'єднання, в яких представляються ім'ям мого сервера?

Для цього необхідно зробити відповідну перевірку в smtpd_helo_restrictions

До цього списку вносимо ім'я нашого сервера

Створюємо карту hello_access.db і даємо команду postfix перечитати конфігураційний файл

А тепер тестуємо наше обмеження

Як мені зробити квотування поштових скриньок?

Взагалі то це не функція MTA, з цього за замовчуванням postfix не підтримує даний функціонал. Якщо вам необхідні квоти, то ви можете використовувати vda (virtual delivery agent) з патчем. Або використовувати альтернативні агенти доставки, наприклад maildrop / dovecot delivery agent

клас локальних доменів [local domain class]

клас віртуальних алиасов [virtual alias domain class]

клас віртуальних доменів [virtual mailbox domain class]

клас доменів ретрансляції (пересилання) [relay domain class]

клас домену за замовчуванням [default domain class]

Список доменів, які є членами даного класу: наприклад, всі локальні домени або всі домени ретрансляції.

Транспорт доставки за замовчуванням. Наприклад, local / virtual / relay / maildrop (транспорти доставки описані в файлі master.cf). Це дозволяє домогтися легкості в налаштуванні postfix, так як відпадає необхідність явно вказувати роутинг в таблиці транспортів

У мене в системі 3 ящика, користувачі системні. Як мені приймати пошту тільки для цих ящиків?

Для вирішення даного завдання досить пречісліть необхідних користувачів в файлі і вказати посилання на нього в параметрі local_recipient_maps

Тепер відправимо лист системному користувачу alexander, але який не вказано в / etc / postfix / local_mailbox

Як ми бачимо postfix ще на етапі SMTP сесії повідомив про те, що такого користувача немає.

Як боротися з помилкою warning: do not list domain domain.ua in BOTH mydestination and virtual_mailbox_domains?

Отже у нас postfix з наступною конфігурацією

Зазначаємо, де зберігати і в якому форматі пошту для користувача [email protected]

Тепер давайте відправимо пошту користувачеві [email protected] (в системі існує системний користувач alex, також він описаний в virtual_mailbox_maps. См. Вище)

Тепер дивимося log-файл

Саме просто рішення даної проблеми - це ісколючіть домен vmware.local з $ mydestination

Ще раз відправляємо повідомлення і дивимося log-файл

Як видно з повідомлення лист доставлено віртуальному користувачеві alex, про що свідчить рядок relay = virtual. а також формат ящика - delivered to maildir

Дехто корисні команди

Висновок значення за замовчуванням певного параметра

Висновок поточного значення параметра

Висновок версії postfix

Видалення всіх листів з черги

Повторна відправка повідомлень, які знаходяться в черзі

Як мені реалізувати «розумний» грейлистинг?

В даному прикладі в якості грейлистинг я використовував - gld. який слухає вхідні з'єднання на порту 2525. Ви можете використовувати будь-який грейлистинг на ваш вибір.

В даному файлі ми описуємо відправників, яких ми хочемо виключити з грейлистинг

В даному файлі ми описуємо хости, які ми хочемо виключити з грейлистинг

В даному файлі ми описуємо власне саму політику - за відсутності запису в зворотній зоні, клієнт буде нагороджений грейлистинг. greylisting - це пользоватлеьскій клас, який визначається у файлі main.cf.

В даному файлі ми описуємо політику - при використанні літеральної форми, клієнт буде нагороджений грейлистинг.

Тоді при спробі відправити відправити вам лист в лог-файлі буде наступне

А тепер давайте подивимося що ж не сподобалося postfix в цьому клієнті

Тепер думаю все стало зрозуміло, навряд чи варто приймати пошту від клієнтів у яких MX запис вказує на 127.0.0.1

Як мені запобігти отриманню пошти від певного домену / користувача?

Як мені запобігти отриманню листів з певними вкладеннями?

Тоді при спробі відправити лист з вкладенням exe / bat / cmd / mp3 в лог-файлі буде наступне

Як уникнути дублювання листів при використанні алиасов?

Наприклад у нас є наступний алиас

Якщо людина відправить лист на info і user1, то user1 отримає дві копії листа. На жаль архітектура postfix на даний момент не дозволяє уникнути даної проблеми

Як мені отримувати всю пошту для не існують ящиків?

Для цього досить задати наступні параметри в main.cf

Особливості роботи даної функції:

буде працювати тільки для системних користувачів і транспорту local

Щоб дізнатися значення за замовчуванням, необхідно виконати наступну команду

Як змусити postfix повідомляти відправника про те, що лист не доставлено одержувачу і знаходиться в черзі?

Для включення даної можливості необхідно задати параметр delay_warning_time

При такій настройці, повідомлення буде відправлятися через 3 години

У мене в системі декілька інтерфейсів, як мені вказати postfix слухати тільки певні?

Існує два способи вирішення цього завдання: внесення змін до main.cf або master.cf

Як вказати postfix слухати порт відмінний від 25го?

Для цього досить замінити рядок в master.cf

І перезапустити postfix. Після цього можна перевірити зміни

Як дізнатися чи підтримує postfix аутентифікацію, і якщо підтримує, то які методи?

Для цього досить виконати наступну команду і після привітання обов'язково ввести ESMTP команду ehlo

Рядок 250-AUTH PLAIN LOGIN говорить про те, що даний сервер підтримує два методи аутентифікації - PLAIN і LOGIN.

Також з даного висновку ми можемо отримати таку цікаву інформацію:

250-SIZE 5242880 - максимальний розмір листа

250 DSN - даний сервер підтримує DSN (Delivery Status Notifications)

250-STARTTLS - включена підтримка SSL / TLS для передачі листів за допомогою шифрування

Як дізнатися чи підтримує postfix MySQL, LDAP. SQLite, PCRE, ...

Для цього досить виконати наступну команду

Як видно з висновку дана збірка postfix не підтримує MySQL. Так само можна перевірити за якими зовнішніми бібліотеками зібраний сам postfix

У мене на сервері 2 інтерфейсу і потрібно, щоб при з'єднанні на 1й інтерфейс видавався один банер, а при з'єднанні на 2й інтерфейс другий. Як це можна реалізувати?

Як мені зберегти копії всіх вихідних листів?

При такій настройці копії всіх вихідних листів будуть дублюватися на ящик [email protected]

Як мені зберегти копії всіх вхідних листів?

При такій настройці копії всіх вхідних листів будуть дублюватися на ящик [email protected]

Як мені зберегти копії всіх листів?

При такій настройці копії всіх листів будуть дублюватися на ящик [email protected]

/etc/postfix/main.cf:
smtpd_sender_restrictions = hash: / etc / postfix / access

# Postmap / etc / postfix / access
# Postfix reload

У файл main.cf
recipient_bcc_maps = hash: / etc / postfix / recipient_bcc

У файл recipient_bcc


postmap / etc / postfix / recipient_bcc
postfix reload