Назад | Перейти на главную страницу

Настройте postfix для использования ретранслятора SMTP Google Apps в экземпляре Google Compute Engine

Каковы действия по настройке postfix в качестве ретранслятора SMTP, использующего ретранслятор SMTP Google Apps? В Интернете есть множество руководств, в которых объясняется, как использовать smtp.gmail.com шлюз с аутентификацией SASL, но мне не удалось найти рабочую конфигурацию для ретранслятора Google Apps smtp-relay.google.com как описано Вот, особенно тот, который относится к Google Compute.

Я настроил службу ретрансляции smtp, указав "только адреса в моих доменах", как описано Вот и подтвердил, что IP-адрес на самом деле тот, с которого я подключаюсь.

Я знаю, что вычисления Google не разрешают порт 25 как исходящий порт, как описано Вот.

Я использую debian linux или производную от debian.

У меня установлен постфикс, как описано в документы но все, что я получаю в mail.log, это:

postfix/smtp[720]: send attr reason = host smtp-relay.gmail.com[66.102.1.28] said: 
550-5.7.1 Invalid credentials for relay [104.155.78.1]. The IP address you've
550-5.7.1 registered in Google Apps SMTP Relay service doesn't match domain of 
550-5.7.1 the accountthis email is being sent from. If you are trying to relay 
550-5.7.1 mail from a domain that isn't registered under your Googles Apps 
550-5.7.1 account or has empty envelope-from, you must configure your mail 
550-5.7.1 server either to use SMTP AUTH to identify the sending domain or to 
550-5.7.1 present one of your domain names in the HELO or EHLO command. For 
550-5.7.1 more information, please visit 
550 5.7.1  https://support.google.com/a/answer/6140680#invalidcred kg2sm505213wjb.4 - gsmtp (in reply to MAIL FROM command)

Установите postfix с помощью apt-get install postfix. При появлении запроса выберите «спутниковая система» или вариант со смартхостом. Примите пока значения по умолчанию для всего остального.

Отредактируйте ваш main.cf в соответствии со следующим файлом:

/etc/postfix/main.cf

# a file which should contain the google apps domain
myorigin = /etc/mailname
# if your google apps domain is in mydestination, remove it, or postfix will attempt to deliver your mail locally
mydestination = ...., localhost

# Google Apps Relay SMTP, must use Port 587 because, 25 is blocked
relayhost = [smtp-relay.gmail.com]:587

# Force ehlo behavior
smtp_always_send_ehlo = yes
smtp_helo_name = <yourappsdomainhere>

# Enable TLS
smtp_use_tls=yes
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

# limit smtp to loopback interface & compute engine doesn't support ipv6
inet_interfaces = loopback-only
inet_protocols = ipv4

# These lines can be used, if the result is not as expected
# debug_peer_list = smtp-relay.gmail.com
# debug_peer_level = 2

Перезапустить постфикс с помощью service postfix restart. Все должно быть хорошо.

Возможно, это не самые чистые решения, но у меня он работает.

Я искал в Интернете несколько дней, чтобы найти решение, которое искали мы с вами.

Убедитесь, что вы установили настройки ретрансляции SMTP в разделе «Приложения»> «Google Apps»> «Gmail»> «Расширенные настройки» в своей учетной записи Google Apps следующим образом:

Убедитесь, что у вас установлены модули postfix и libsasl2.

sudo apt-get update
sudo apt-get install postfix
sudo apt-get install libsasl2-modules

Конфигурация Postfix

Во время настройки Postfix установите следующие параметры:

  • Общий тип конфигурации почты: Интернет с smarthost.
  • Имя почты: example.com (полное доменное имя)
  • Хост ретрансляции: [smtp.gmail.com]: 587

Ваш /etc/postfix/main.cf файл должен выглядеть так:

myhostname = yourdomain.com
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

myorigin = /etc/mailname
mydestination = yourdomain.com

relayhost = [smtp.gmail.com]:587
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

# Use IPv4 protocol
inet_protocols = ipv4

# enable SASL authentication 
smtp_sasl_auth_enable = yes

# disallow methods that allow anonymous authentication. 
smtp_sasl_security_options = noanonymous

# where to find sasl_passwd
smtp_sasl_password_maps = hash:/etc/postfix/sasl/passwd

# Enable STARTTLS encryption 
smtp_use_tls = yes

# where to find CA certificates
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

Создать /etc/postfix/sasl/passwd и добавьте свое имя пользователя и пароль в Google Apps следующим образом:

[smtp.gmail.com]:587 you@yourdomain.com:yourpassword

Теперь создайте файл hash db для Postfix, выполнив команду postmap:

sudo postmap /etc/postfix/sasl/passwd

Защитите файлы паролей и хэш-базы данных, чтобы только root мог их читать и записывать:

sudo chown root:root /etc/postfix/sasl/passwd /etc/postfix/sasl/passwd.db
sudo chmod 0600 /etc/postfix/sasl/passwd /etc/postfix/sasl/passwd.db

Перезапустите Postfix:

sudo /etc/init.d/postfix restart

Если вы установили mailutils, вы можете проверить отправку писем:

echo "body of your email" | mail -s "This is a Subject" -a "From: you@yourdomain.com" receiver@otherdomain.com

Если ваша почта не получена, проверьте файл mail.log на наличие сообщений об ошибках:

sudo tail -f /var/log/mail.log

Я написал более подробную статью: http://dev.robbertvermeulen.com/postfix-google-apps-smtp-relay-google-compute-engine/

Возможно, поздно, но: если вы используете G-Suite, вы должны использовать smtp-relay.gamil.com:587 и хорошо знать, что учетная запись доступа с двумя аутентификациями выдает ошибку: Требуется пароль для конкретного приложения