Использование 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, если есть сообщение о стеке, которое говорит об этом, что я, возможно, пропустил, не стесняйтесь указать мне на это!
-Том
Хотя я не пробовал ретранслировать через провайдера, используя порт отправки (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)