Вопрос или проблема
Я пытался настроить электронную почту для перенаправления на Gmail, используя Postfix для пересылки почты на smtp.gmail.com. Однако у меня не получается аутентифицироваться на smtp.gmail.com, что является довольно важным предпосылкой для успешной работы…
Журналы почты показывают только:
29 окт 15:50:14 gsnedders-1 postfix/master[6596]: демонтирован -- версия 2.7.1, конфигурация /etc/postfix
29 окт 15:50:19 gsnedders-1 postfix/pickup[6598]: EBA1F78750: uid=1000 от=<gsnedders>
29 окт 15:50:19 gsnedders-1 postfix/cleanup[6603]: EBA1F78750: message-id=<[email protected]>
29 окт 15:50:19 gsnedders-1 postfix/qmgr[6599]: EBA1F78750: от=<[email protected]>, размер=324, nrcpt=1 (очередь активна)
29 окт 15:50:19 gsnedders-1 postfix/cleanup[6603]: F2D557874F: message-id=<[email protected]>
29 окт 15:50:19 gsnedders-1 postfix/local[6605]: EBA1F78750: к=<[email protected]>, orig_to=<me>, relay=local, задержка=0.04, задержки=0.03/0.02/0/0, dsn=2.0.0, статус=отправлено (перенаправлено как F2D557874F)
29 окт 15:50:19 gsnedders-1 postfix/qmgr[6599]: F2D557874F: от=<[email protected]>, размер=454, nrcpt=1 (очередь активна)
29 окт 15:50:19 gsnedders-1 postfix/qmgr[6599]: EBA1F78750: удален
29 окт 15:50:20 gsnedders-1 postfix/smtp[6606]: предупреждение: Ошибка аутентификации SASL: Не найдены подходящие механизмы
29 окт 15:50:20 gsnedders-1 postfix/smtp[6606]: F2D557874F: Ошибка аутентификации SASL; не удалось аутентифицироваться на сервере smtp.gmail.com[74.125.157.108]: механизм отсутствует
А конфигурация postfix выглядит так:
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl/passwd
smtp_sasl_security_options = noanonymous
smtp_tls_eccert_file =
smtp_tls_eckey_file =
smtp_tls_security_level = may
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtpd_tls_received_header = yes
tls_random_source = dev:/dev/urandom
smtpd_tls_security_level = may
Ага! Установка пакета libsasl2-modules
решила проблему.
Выполнение команды
sudo yum install cyrus-sasl cyrus-sasl-lib cyrus-sasl-plain
sudo systemctl restart postfix
помогло мне на сервере Amazon AWS (и CentOS/RHEL 8).
Это сработало для проверки перенаправления Gmail (CentOS 7)
sudo yum install cyrus-sasl cyrus-sasl-lib cyrus-sasl-plain
У меня возникла эта проблема (tail -f /var/log/mailog
):
к=<[email protected]>, relay=smtp.sendgrid.net[169.45.113.201]:587, задержка=0.3, задержки=0.05/0.07/0.16/0.02, dsn=5.0.0, статус=отклонено (хост smtp.sendgrid.net[169.45.113.201] сказал: 550 Неаутентифицированные отправители не разрешены (в ответ на команду MAIL FROM))
Затем я изменил файл /etc/postfix/main.cf
, добавив в конец файла следующие строки
mtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
mailbox_size_limit = 256000000
# Настройки Sendgrid
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = static:apikey:SG.YOUR_SENDGRID_KEY
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = may
header_size_limit = 4096000
relayhost = [smtp.sendgrid.net]:587
Затем я установил недостающие модули зависимостей postfix с помощью:
sudo yum install cyrus-sasl cyrus-sasl-lib cyrus-sasl-plain
Затем перезапустил postfix
sudo systemctl restart postfix.service
В конце концов, все заработало на CentOS 7
Настройка следующей переменной окружения помогла мне:
SASL_PATH=/usr/lib/x86_64-linux-gnu/sasl2
(это для Ubuntu).
Ответ или решение
Если вы сталкиваетесь с ошибкой "No worthy mechs found" при попытке настроить Postfix для пересылки электронной почты через Gmail, это указывает на проблемы с аутентификацией SASL. Ниже приведены шаги для решения данной проблемы:
1. Установите необходимые пакеты
Убедитесь, что у вас установлены необходимые пакеты для работы с аутентификацией SASL. На системах, основанных на CentOS или RHEL, выполните следующую команду:
sudo yum install cyrus-sasl cyrus-sasl-lib cyrus-sasl-plain
Для Ubuntu или Debian используйте:
sudo apt-get install libsasl2-modules
2. Настройте конфигурацию Postfix
Отредактируйте файл конфигурации вашего Postfix, который обычно находится по пути /etc/postfix/main.cf
. Проверьте, что у вас есть следующие строки, присутствующие и правильно настроенные:
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl/passwd
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = may
smtp_tls_CAfile = /etc/postfix/cacert.pem
3. Создайте файл паролей для SASL
Создайте файл /etc/postfix/sasl/passwd
и добавьте в него учетные данные для Gmail в следующем формате:
[smtp.gmail.com]:587 username@gmail.com:yourpassword
Замените username@gmail.com
и yourpassword
на свои актуальные параметры. После этого выполните команду для создания хешированного файла:
sudo postmap /etc/postfix/sasl/passwd
4. Права и доступ к файлам
Убедитесь, что файл паролей и директория /etc/postfix/sasl
имеют правильные права доступа:
sudo chmod 600 /etc/postfix/sasl/passwd
sudo chown root:root /etc/postfix/sasl/passwd
5. Перезапустите Postfix
После внесения всех изменений перезапустите службу Postfix:
sudo systemctl restart postfix
6. Дополнительные настройки для Ubuntu
Если вы используете Ubuntu, иногда требуется установить переменную окружения, чтобы указать правильный путь для SASL. Это можно сделать добавлением следующей строки в ваш файл /etc/environment
:
SASL_PATH=/usr/lib/x86_64-linux-gnu/sasl2
После этого выполните:
source /etc/environment
7. Проверка и отладка
Теперь проверьте журналы Postfix на наличие ошибок:
tail -f /var/log/mail.log
Если вы все еще получаете ошибки, убедитесь, что ваши учетные данные верны, и что у вас включена поддержка "менее безопасных приложений" в настройках безопасности вашей учетной записи Gmail. Также следует проверить, не блокирует ли файрволлинг ваш сервер.
Следуя этим шагам, вы должны успешно устранить ошибку "No worthy mechs found" и настроить Postfix для пересылки электронной почты через Gmail.