Symfony Swiftmailer — учетные данные AWS SES не работают, если в учетных данных используются специальные символы

Я отправляю электронную почту через Symfony Swiftmailer с AWS SES. Это прекрасно работает.

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

Для моего первого приложения мои учетные данные работают нормально, но особенность секретного ключа состоит в том, что он содержит только символы алфавита. Мой второй набор учетных данных содержит / и +.

Я разговаривал со службой поддержки AWS, которая показала мне, что я могу отправлять электронную почту с помощью

  openssl s_client -crlf -quiet -starttls smtp -connect email-smtp.ap-southeast-2.amazonaws.com:587 < SMTP.txt

где SMTP.txt содержит учетные данные в кодировке base64 (этот метод )

Нужно ли мне кодировать мои учетные данные в моем файле .env?


person jdog    schedule 19.04.2021    source источник


Ответы (1)


документация по Swift Mailer предупреждает вас о специальных символах:

Если имя пользователя, пароль или хост содержат какой-либо символ, считающийся специальным в URI (например, +, @, $, #, /, :, *, !), их необходимо закодировать. См. RFC 3986 для получения полного списка зарезервированных символов или используйте urlencode для их кодирования.

Выполните команду, похожую на эту, чтобы получить зашифрованный пароль

<?php
    $plainpwd = "...Your password...";
    echo urlencode($plainpwd);
?>

и используйте его в своей конфигурации .env. Например,

MAILER_URL=smtp://email-smtp.us-east-1.amazonaws.com:587?encryption=tls&username=YOUR_SES_USERNAME&password=YOUR_ENCODED_SES_PASSWORD
person nikoshr    schedule 21.04.2021
comment
Чтобы написать URL-адрес в шаблоне Ansible/Jinja2, я использую {{ses_key | URL-код | заменить('/','%2F')}} - person jdog; 22.04.2021