Настройте Postfix для отправки / ретрансляции электронной почты Gmail (smtp.gmail.com) через порт 587

9

Использование Centos 5.4, с Postfix. Я могу сделать

mail foo@gmail.com 
subject: blah
 test
.
Cc:

и сообщение отправляется в gmail, но оно находится в папке спама, что и следовало ожидать.

Моя цель - создавать почтовые сообщения и отображать их в обычной папке «Входящие»! Как я понимаю, Postfix / Gmail можно настроить Postfix для отправки / ретрансляции почты через аутентифицированного / действительного пользователя через порт 587, который больше не будет рассматривать почту как спам.

Я попробовал ряд параметров, основанных на различных сайтах / статьях из сети, но не повезло. Некоторые из статей, похоже, противоречат другим статьям! Я также просмотрел сообщения Stacflow об этом, но я все еще что-то упускаю ... Также поговорил с несколькими людьми по IRC (Centos / Postfix) и все еще есть вопросы ...

Итак, я снова обращаюсь к Serverfault!

Если есть кто-то, кому удалось это сделать, не могли бы вы опубликовать свои main.cf, sasl-passwd и любые другие файлы conf, которые вы используете для этой работы! Если я смогу просмотреть ваши конфигурационные файлы, я надеюсь увидеть, где я облажался, и выяснить, как исправить проблему.

Спасибо за чтение и любую помощь / указатели, которые вы предоставляете!

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

-Том

Том Смит
источник

Ответы:

16

Хотя я не пытался передавать через провайдера через порт отправки (587), это должно быть возможно. Чтобы включить Postfix для ретрансляции, вам нужно настроить файл с аутентифицированными учетными данными и внести некоторые изменения в ваш /etc/postfix/main.cfконфигурационный файл.

Первый - это учетные данные для аутентификации. Для этого я просто использую /etc/postfix/sasl_passwdсоответствующую строку с помощью шаблона:

smtp.provider.com    smtp_user:smtp_passwd

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

postmap hash:/etc/postfix/sasl_passwd

При этом отвлеките ваше внимание, и /etc/postfix/main.cfвы сможете найти некоторые из уже установленных значений, поэтому вам нужно будет изменить их соответствующим образом, но важны следующие детали:

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =
smtp_tls_security_level = may

Это позволит Postfix использовать файл sasl_passwd для аутентификации при отправке почты. Затем вам нужно будет сказать Postfix, что он должен использовать провайдера для отправки почты, добавив конфигурацию

relayhost = smtp.provider.com:port

По умолчанию Postfix предполагает порт 25, если вы не укажете, и это работало для меня в прошлом. С вашей запрошенной настройкой вам нужно будет указать 587 в качестве порта. С учетом вышесказанного я не уверен, что вам нужно будет изменить запись sasl_passwd smtp.provider.com:587вместо простой, smtp.provider.comпоскольку раньше я не пытался делать это через порт, отличный от порта по умолчанию, поэтому вам придется попробовать его самостоятельно.

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

Обновлено, чтобы включить полностью рабочий пример

Фактически получается, что я настроил свой ноутбук на основе Ubuntu (на основе Debian) для использования порта 587 на моем почтовом провайдере (не Gmail), так как мой провайдер DSL блокирует исходящий трафик 25 порта. Я обновил, чтобы использовать одну из моих учетных записей Gmail для отправки почты вместо. Единственное изменение, которое мне нужно было сделать

Я затенение личных данных , но в противном случае наклеивать как есть рабочая конфигурация для Postfix.

Сначала мы имеем /etc/postfix/main.cf:

# See /usr/share/postfix/main.cf.dist for a commented, more complete version


# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
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
smtp_tls_security_level = may

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = solitare, localhost.localdomain, , localhost
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
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =

Далее у нас есть /etc/postfix/sasl_passwd:

smtp.gmail.com:587  myusername@gmail.com:mypassword

Затем я запустил следующий сеанс SMTP:

jbouse@solitare:~$ telnet localhost 25
Trying 127.0.0.1...
Connected to solitare.
Escape character is '^]'.
220 example.com ESMTP Postfix (Ubuntu)
helo localhost
250 example.com
mail from: jbouse@example.com
250 2.1.0 Ok
rcpt to: myotherusername@gmail.com
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
To: myotherusername@gmail.com
From: jbouse@example.com
Subject: Testing Postfix smarthost via Gmail
this is just a test
.
250 2.0.0 Ok: queued as 6269B280191
quit
221 2.0.0 Bye
Connection closed by foreign host.

Затем я захожу в свою myotherusernameучетную запись Gmail и читаю сообщение:

Return-Path: <myotherusername@gmail.com>
Received: from example.com (mydslproviderhostname.net [x.x.x.229])
        by mx.google.com with ESMTPS id 6sm401663ywd.11.2010.03.04.19.19.58
        (version=TLSv1/SSLv3 cipher=RC4-MD5);
        Thu, 04 Mar 2010 19:19:58 -0800 (PST)
Sender: "Jeremy Bouse" <myotherusername@gmail.com>
Received: from localhost (solitare [127.0.0.1])
    by example.com (Postfix) with SMTP id 6269B280191
    for <myotherusername@gmail.com>; Thu,  4 Mar 2010 22:17:39 -0500 (EST)
To: myotherusername@gmail.com
From: jbouse@example.com
Subject: Testing Postfix smarthost via Gmail
Message-Id: <20100305031745.6269B280191@example.com>
Date: Thu,  4 Mar 2010 22:17:39 -0500 (EST)

this is just a test

Теперь, продемонстрировав, что мои 13 лет работы системным администратором не пропали даром, я отправляю электронные письма со своего ноутбука через Gmail, при этом мне не нужно создавать самозаверяющий сертификат x.509, как вам скажут другие. Ключевым дополнением к параметру /etc/postfix/main.cfявляется параметр smtp_tls_security_level, который может сообщить Postfix, что можно использовать команду STARTTLS при подключении к другому MTA, если он поддерживает TLS. Если вы забудете настройку smtp_tls_security_level, вы можете увидеть в ней запись следующего /var/log/mail.logсодержания:

Mar  4 22:10:58 solitare postfix/smtp[19873]: 20E07280191: to=<myotherusername@gmail.com>, relay=smtp.gmail.com[74.125.47.109]:587, delay=38, delays=38/0.03/0.08/0.01, dsn=5.7.0, status=bounced (host smtp.gmail.com[74.125.47.109] said: 530 5.7.0 Must issue a STARTTLS command first. 20sm399188ywh.48 (in reply to MAIL FROM command))

Однако при правильной настройке вы должны увидеть что-то вроде:

Mar  4 22:20:00 solitare postfix/smtp[20313]: 6269B280191: to=<myotherusername@gmail.com>, relay=smtp.gmail.com[74.125.47.109]:587, delay=141, delays=110/29/0.36/1.9, dsn=2.0.0, status=sent (250 2.0.0 OK 1267759200 6sm401663ywd.11)
Джереми Бауз
источник
Привет, Джереми ... Спасибо за ответ. Несколько вопросов. Я видел чистые сообщения, которые имеют smtpd _... params .. Я полагаю, они мне не нужны. Кроме того, некоторые статьи имеют / ссылаются на сертификаты TSL. Нужно ли вообще с ними обращаться? Спасибо!!
Том Смит
параметры smtpd _... предназначены для Postfix как сервера ... В случае ретрансляции на smarthost Postfix работает как клиент, использующий параметры smtp _...
Джереми Баус
1
gravyface, вы, очевидно, не знаете, о чем говорите. Я предлагаю вам немного прочитать о SMTP и TLS / SSL / x.509, так как вам не хватает знаний по предмету.
Джереми Баус
1
felipe-alfaro.org/blog/2009/05/10/… ... Второй абзац перекликается с моими собственными комментариями ...
Джереми Баус
1
Спасибо за разъяснение, Джереми. Я всегда думал, что это было немного странно, что вы должны были подписать свой собственный сертификат, но в спешке (и во многих статьях / уроках, которые я видел) они все говорили, что делают это. Живи и учись.
gravyface