LINUX.ORG.RU
ФорумAdmin

postfix ограничение скорости отправки писем(шт в ед. времени)

 


0

2

Доброго дня. ОС CentOS 7, установлен постфикс 3.5 . Этот сервер впс на котором установлена bitrix vm. На нем я перенастроил почту согласно этой инструкции чтобы почта уходила через постфикс https://pai-bx.com/wiki/vmbitrix/2324-bitrixvm-helmet-mail-through-postfix/ который в свою очередь использует смтп яндекса для непосредственной доставки уже получателю. Отправка почты без проблем работает и письма не попадают в спам. Но суть этих всех дел такая: сайт(на битриксе) должен делать рассылки при появлении новости. Подписчиков овер9000 буквально.И когда планировщик запускает обработчик модуля рассылки то он отправляет все письма скопом за один раз. Его за этот сервер яндекса после энного колва отправленых отбивает по причине «слишком много отправленных писем» и модуль на этом успокаивается и в итоге получается что отправлена только малая часть. Доработка модуля отправки задача достаточно сложная и я решил пойти путем настройки постфикса чтобы он был неким буфером т.е. принимал у сайта все письма а потом их потихоньку например 10 в минуту отправлял. Вроде бы нашел нужные параметры но почемуто они не работают. Вот какой сейчас конфиг(это то что добавлено в конец дефолтного main.cf):

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/mailpasswd
smtp_sasl_security_options = noanonymous
smtp_sasl_type = cyrus
smtp_sasl_mechanism_filter = login
smtp_sender_dependent_authentication = yes
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay
#sender_canonical_maps = hash:/etc/postfix/canonical
#smtp_generic_maps = hash:/etc/postfix/generic
smtp_use_tls = yes
queue_run_delay = 15m
smtp_destination_rate_delay = 55s
default_destination_concurrency_limit = 1
smtp_destination_concurrency_limit = 1
smtp_destination_recipient_limit = 1
smtp_initial_destination_concurrency = 1
default_destination_rate_delay = 50s
smtp_transport_rate_delay = 120s
default_transport_rate_delay = 120s

debug_peer_level = 2

Но к сожалению почемуто постепенная отправка не работает - проверяю в php консоли битрикса выполняя 10 функций mail подряд - все приходят почти сразу. Еще есть пробелма что постфикс почемуто не пишет особых подробностей в лог. Все что он туда пишет это:

Jun 10 08:55:52 hosted-by postfix[4026]: Postfix is running with backwards-compatible default settings
Jun 10 08:55:52 hosted-by postfix[4026]: See http://www.postfix.org/COMPATIBILITY_README.html for details
Jun 10 08:55:52 hosted-by postfix[4026]: To disable backwards compatibility use "postconf compatibility_level=2" and "postfix reload"
Jun 10 08:55:52 hosted-by postfix/postfix-script[4090]: starting the Postfix mail system
Jun 10 08:55:52 hosted-by postfix/master[4092]: daemon started -- version 3.5.8, configuration /etc/postfix

Поможите плиз мне настроить таки эту штуку - я уже третий день с ним во всех позах…

Сексом с постфиксом заниматься не надо. Лучше кури документацию вдумчиво.
Слово destination в твоих конфигах тебя должно навести на мысли.

А вобще для этих целей придумали policyd

BOOBLIK ★★★
()
Ответ на: комментарий от BOOBLIK

Вы имеете ввиду что одних только параметров недостаточно и надо еще что то доделывать в настройках постфикса? насчет policyd - я почитал но пока не пойму потребуется ли ему база данных чисто для работы модуля квотирования?

coolstudent
() автор топика

Не понял, а в настройках модуля Битрикса Email-маркетинг у Вас что ?

Он по умолчанию с задержкой между письмами отправляет, а чтобы одновременно отправлял там специально переключать надо!

suffix ★★
()
Ответ на: комментарий от constin

Что вы имеете ввиду под схитрожопить? Переработка модуля отправки почты на битриксе это реально очень немаленькая задача. Я вначале предполагал именно переработку но когда начал смотреть код мягко говоря охренел. У меня к сожалению еще не хватает опыта для таких задач. Плюс стиль битриксового кода не очень располагает к его переделке - эту тарелку спагетти надо сначала разобрать на отдельные макаронины, выпрямить их и сложить в красивый штабель а потом уже ваять чтото свое.

coolstudent
() автор топика
Ответ на: комментарий от suffix

Я использую модуль «подписка, рассылки» ибо требуется рассылать новость именно подписчикам на рассылку новостей. Возможно у вас есть алгоритм использования модуля емейл маркетинга для подобного? Если да то поделитесь хотя бы примерным описанием. Сейчас посмотрел его состав - если его задействовать то надо будет еще и переделывать систему подписки под этот модуль ибо стандартная подписка работает с модулем рассылок.

coolstudent
() автор топика

Сам откопал что таким образом ограничения не будут работать. Надо чтобы постфикс принимал почту по смтп. Возможно кто нить может подсказать как настроить постфикс как релей без авторизации? Так как он слушает только локалхост то проблем с лишними людьми не будет. Сайт будет отправлять почту через msmtp который в свою очередь будет по смтп передавать ее постфиксу а тот уже применяя ограничения скорости отправки будет перекидывать яндексу также по смтп.

coolstudent
() автор топика
Ответ на: комментарий от constin

Ну это желание владельца сайта использовать яндекс. Моя задача настроить сервер так чтобы не превышать лимиты отправки.

coolstudent
() автор топика
Ответ на: комментарий от coolstudent
  1. Модуль «подписка, рассылки» устарел и самим Битриксом уже не рекомендован - не выпилен вот как раз и-за таких динозавров как Вы :)

  2. Подписка в нём разумеется реализована (а нафига он бы был нужен без неё)

  3. Да, наверняка чтобы перейти от старого к новому придётся что-то переделать, но уверен что ничего архисложного нет. Думаю что Вы справитесь :)

suffix ★★
()

При таких условиях, в любом случае нарвёшься на ограничения. Даже на явные (35 за раз можно пройти, а 3000 в день никак), а у них еще и скрытые. Не используй yandex. Они и за деньги не помогут и не улучшат, а только рекламу перестанут совать.

boowai ★★★★
()
Ответ на: комментарий от boowai

Вы думаете что настроить свой сервер чтобы рассылки в спам не улетали легче ? Учитывая что профессия postmaster умерла :(

suffix ★★
()
Ответ на: комментарий от coolstudent

Возможно кто нить может подсказать как настроить постфикс как релей без авторизации?


mynetworks = 127.0.0.0/8, <ip отправляющего сервера без авторизации>

smtpd_client_restrictions = 
  permit_mynetworks
...

constin ★★★★
()
Ответ на: комментарий от coolstudent

Ну это желание владельца сайта использовать яндекс.

А yandex или любой другой почтовый сервер, не предназначенный для рассылок, этого не хочет. Что вполне закономерно.

Но владелец сайта не хочет платить проифльным сервисам или воевать с проблемой попадания писем в спам от своего сервера. В этом и хитрожопость. И пост о том «как наеб..ть yandex»

constin ★★★★
()
Ответ на: комментарий от suffix

В спам хоть как все улетать будут. Хорошо хоть, что сначала доходить будут, а не сразу отбрасываться. Притензии к самому яндексу (но он не один такой). Яндекс загоняет в своё облако, а нормальный шлюз, типа Amazon SES, не предоставляет. https://cloud.yandex.ru/features/61 (поиск какой-то сломанный на этом домене)

было бы очень здорово. Вариант с pdd.yandex.ru не очень крут из-за лимита и ручной валидации на спам время от времени.

boowai ★★★★
()
Последнее исправление: boowai (всего исправлений: 4)
Ответ на: комментарий от boowai

типа Amazon SES

Какой смысл в этом «нормальном» шлюзе. Письма будут посылаться все равно с ip с неизвестной репутацией и от вашего домена. Да еще и blackbox . Те получаете все прелести своего почтового сервера.

constin ★★★★
()
Последнее исправление: constin (всего исправлений: 1)
Ответ на: комментарий от constin

вот конфиг на текущий момент: postconf -n:

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
default_destination_concurrency_limit = 1
default_destination_rate_delay = 50s
html_directory = no
inet_interfaces = localhost
inet_protocols = all
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 127.0.0.0/8, 127.0.0.1
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
relay_domains = $mydestination
sample_directory = /usr/share/doc/postfix-2.10.1/samples
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtp_destination_concurrency_limit = 1
smtp_destination_rate_delay = 55s
smtp_destination_recipient_limit = 1
smtp_initial_destination_concurrency = 1
smtp_sasl_auth_enable = yes
smtp_sasl_mechanism_filter = login
smtp_sasl_password_maps = hash:/etc/postfix/mailpasswd
smtp_sasl_security_options = noanonymous
smtp_sasl_type = cyrus
smtp_sender_dependent_authentication = yes
smtp_use_tls = yes
smtpd_client_restrictions = permit_mynetworks
smtpd_data_restrictions = permit_mynetworks
smtpd_helo_restrictions = permit_mynetworks
smtpd_recipient_restrictions = permit_mynetworks
unknown_local_recipient_reject_code = 550

msmtprc:

defaults
port 25
tls off

account default
host localhost
from noreply@site.rostselmash.com
auth off

пробую такую команду

echo "hello" | msmtp -C /etc/msmtprc -t -i coolstudent@yandex.ru

и получаю такой вывод

msmtp: recipient address coolstudent@yandex.ru not accepted by the server
msmtp: server message: 454 4.7.1 <coolstudent@yandex.ru>: Relay access denied
msmtp: could not send mail (account default from /etc/msmtprc)

подскажите пожалуйста где косяк

coolstudent
() автор топика
Ответ на: комментарий от coolstudent

MPORTANT: Either the smtpd_relay_restrictions or the smtpd_recipient_restrictions parameter must specify at least one of the following restrictions. Otherwise Postfix will refuse to receive mail:

reject, reject_unauth_destination
defer, defer_if_permit, defer_unauth_destination

иными словами нельзя просто писать

smtpd_recipient_restrictions = permit_mynetworks

надо минимум:

smtpd_recipient_restrictions = 
   permit_mynetworks
   defer_unauth_destination

Так же убери всю эту шляпу ниже, не имеет никакого смысла. Бездумный конфиг.

smtpd_client_restrictions = permit_mynetworks
smtpd_data_restrictions = permit_mynetworks
smtpd_helo_restrictions = permit_mynetworks
constin ★★★★
()
Последнее исправление: constin (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.