Помогаем msmtp получать отправителя из заголовка письма From:

[spoiler]
Битрикс24 бывает отправляет письма, указывая отправителя в заголовке From, тогда можно использовать параметр
--read-envelope-from , что бы не ловить ошибки вида

<-- 550 5.7.0 Sender or From header address rejected: not owned by authorized user 1611654484-a4dQR4np8G-m3ICPKIl

Но, в том же тесте системы заголовок From не передается, как и в некоторых других ситуациях, тогда ловим ошибку отправки почты
envelope from address extracted from mail: (null)
loaded system configuration file /etc/msmtprc
loaded user configuration file /home/bitrix/.msmtprc
falling back to default account
msmtp: account default from /home/bitrix/.msmtprc: envelope-from address is missing


Нашлось простое решение, смотрим, есть ли заголовок письма, если да, то запускаем msmtp с параметром --read-envelope-from, иначе пусть запускается стандартно.

Создаем скрипт /usr/bin/bitrix_email.sh

С содержимым
#!/bin/bash
export HOME=/home/bitrix


args=$@


message_body=""
while read line; do
  message_body="$message_body$line\n"
done < /dev/stdin


if [[ $message_body == *"From:"* ]]; then
echo -e "$message_body" | /usr/bin/msmtp --debug -t -i --read-envelope-from $args
else
echo -e "$message_body" | /usr/bin/msmtp --debug -t -i $args
fi

Делаем скрипт запускаемым
chmod +x /usr/bin/bitrix_email.sh

Далее прописываем этот скрипт в /etc/php.d/bitrixenv.ini , если у вас bitrixVM или в ином в вашем случае
sendmail_path = /usr/bin/bitrix_email.sh

перезапускаем php-fpm или httpd

service httpd restart

Всё, теперь при отправке почты отправитель будет браться из заголовков письма, если задан такой заголовок.
Дата публикации: 26.01.2021, 894 прочтения

Посмотреть остальные посты
0
sellZem
04.03.2021
yyy where can i find a shoutbox message? / sells