Я сижу здесь несколько часов, пытаясь заставить sendmail отправлять электронные письма через внешний SMTP-сервер. Я подошел очень близко, но теперь я полностью застрял. Похоже, что sendmail не отправляет установленную мной информацию для аутентификации. Есть ли какая-то строка конфигурации, которую мне не хватает?
Пожалуйста помоги. :(
Запуск CentOS 5.7
РЕДАКТИРОВАТЬ:
По просьбе, я добавлю сюда кое-что из моего sendmail.
Где я указал использовать информацию об авторизации:
FEATURE(authinfo',hash -o /etc/mail/auth/client-info.db')dnl
/ etc / mail / auth / client-info:
AuthInfo:in.mailjet.com "U:myusername" "P:mypassword" "M:PLAIN"
Попытка отправить электронное письмо:
# sendmail -AM -t -v
to:myemail@gmail.com
from:root@mydomain.com
.
myemail@gmail.com... Connecting to in6.mailjet.com. via relay...
220 in6.mailjet.com ESMTP Mailjet
>>> EHLO mydomain.com
250-in6.mailjet.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5
250-AUTH=PLAIN LOGIN DIGEST-MD5 CRAM-MD5
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
>>> STARTTLS
220 2.0.0 Ready to start TLS
>>> EHLO mydomain.com
250-in6.mailjet.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5
250-AUTH=PLAIN LOGIN DIGEST-MD5 CRAM-MD5
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
>>> MAIL From:<root@mydomain.com> SIZE=37
250 2.1.0 Ok
>>> RCPT To:<myemail@gmail.com>
>>> DATA
554 5.7.1 <myemail@gmail.com>: Relay access denied
554 5.5.1 Error: no valid recipients
>>> RSET
250 2.0.0 Ok
/root/dead.letter... Saved message in /root/dead.letter
Closing connection to in6.mailjet.com.
>>> QUIT
221 2.0.0 Bye
Я была такая же проблема. Наконец сделал это с несколькими конфигурациями.
/etc/mail/sendmail.mc
define('SMART_HOST','smtp.yourdomain.com')dnl
define('confAUTH_OPTIONS','A')dnl
FEATURE('authinfo','hash -o /etc/mail/authinfo.db')dnl
MASQUERADE_AS('yourdomain.com')dnl
FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl
MASQUERADE_DOMAIN('yourdomain.com.')dnl
FEATURE('relay_based_on_MX')dnl
FEATURE('genericstable')dnl
GENERICS_DOMAIN('localhost.localdomain')dnl
/etc/mail/authinfo (660 permissions)
Authinfo:yourdomain.com "U:yoursmtpuserid" "P:yourpassword" "M:PLAIN"
Authinfo: "U:yoursmtpuserid" "P:yourpassword" "M:PLAIN"
>makemap hash /etc/mail/authinfo < /etc/mail/authinfo
/etc/mail/access (660 permissions)
connect:localhost.localdomain RELAY
connect:localhost RELAY
connect:127.0.0.1 RELAY
>makemap hash /etc/mail/access < /etc/mail/access
/etc/genericstable
root youruseremail@yourdomain.com
>makemap hash /etc/mail/genericstable < /etc/mail/genericstable
/etc/named.conf
options{
listen-on port 53 {127.0.0.1;};
};
>cp -f /etc/named.conf /var/named/chroot/etc/
/etc/resolve.conf
nameserver 127.0.0.1
nameserver youriplocal
domain localdomain
>chkconfig -> named on
-> saslauthd on
-> sendmail on
>service named restart
>service saslauthd restart
>service sendmail restart
Чтобы проверить это, вы можете выполнить:
sendmail -Am -t -v кому: адрес электронной почты от: youremail
Надеюсь, это сработает для вас.
Для sendmail я обычно управляю аутентификацией SMTP, добавляя запись в /etc/mail/access
. Вот краткий пример вашей настройки:
# /etc/mail/access
# by default we allow relaying from localhost...
localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY
AuthInfo:in.mailjet.com "U:smmsp" "I:myusername" "P:mypassword" "M:PLAIN"
Сохраните это и перезапустите демон sendmail, /sbin/service sendmail restart
.
Вы бежали:
makemap hash client-info < client-info
Если вы не создадите файл client-info.db из текстового с помощью приведенной выше команды, информация, которая там находится, не будет прочитана sendmail
РЕДАКТИРОВАТЬ №1:
Из книги о летучей мыши я скопировал это:
Когда sendmail подключается к другому хосту и этот другой хост предлагает пройти аутентификацию, IP-адрес, имя хоста и домен этого подключенного хоста ищутся в базе данных.
Если IP-адрес, хост или домен не найдены, соединение разрешено, но sendmail не будет пытаться его аутентифицировать. В противном случае информация в соответствующем правом столбце возвращается для использования sendmail.
Вы подключаетесь к in6.mailjet.com, который является MX для in.mailjet.com. Так что, возможно, вам придется изменить строку AuthInfo: на:
AuthInfo:mailjet.com "U:myusername" "P:mypassword" "M:PLAIN"
РЕДАКТИРОВАТЬ № 2:
Похоже, у вас есть небольшая опечатка в объявлении FEATURE (authinfo):
FEATURE(`authinfo', `hash -o /etc/mail/auth/client-info.db')dnl
Удалите -o (необязательно) из функции authinfo и перезапустите / перезагрузите sendmail. Это заставит sendmail отказываться запускаться без доступа к карте / файлу authinfo.
FEATURE(`authinfo',`hash ...')
Повторите отправку вам тестового электронного письма с поиском карты отслеживания (включая отслеживание поиска карты authinfo)
sendmail -d60.5 -AM -t -v
Ищет ли sendmail записи authinfo? [Ответ должен сузить список возможных проблем]
Моя короткая конфигурация в sendmail.mc для SMTP Auth как клиент для mailjet.com:
include(`/etc/mail/sasl/sasl.m4')dnl
define(`SMART_HOST', `[in-v3.mailjet.com]')dnl
define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl
587, потому что порт 25 заблокирован. STARTTLS и ESMTP теперь автоматически находятся в Sendmail. Перед, libsasl2-modules
(в дополнение к необязательному libsasl2-modules-db
) и sasl2-bin
должен быть установлен. Думает перейти на START =да в / etc / defa ult / saslauthd (в debian)
В доступе:
AuthInfo:mailjet.com "U:5xxxxx" "P:f6xxxxxx" "M:LOGIN PLAIN DIGEST-MD5 CRAM-MD5"
И наконец, беги /usr/share/sendmail/update_auth
.
Итак, осталось изменить всего 2 файла sendmail.mc
и access
. После, конечно, make
в /etc/mail
затем service sendmail restart
.
ps: много туториалов, добавить: 587 после AuthInfo:mailjet.com
, это ошибка AMHA. Отладка -d60.5
(другая карта поиска) это мое доказательство.