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

Как настроить sendmail для фактической отправки писем (!)

Я настраиваю почтовый сервер, но sendmail не позволяет мне отправлять почту с удаленных устройств и / или программного обеспечения. Моя конфигурация: CentOS 6.4, Sendmail 8.14.4.

Вот сообщение, которое я получаю при попытке отправить электронную почту извне сервера

sendmail[25390]: rA4Fp855025390: [213.x.x.x] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA
sendmail[25391]: rA4Fp86s025391: ruleset=check_rcpt, arg1=<username@gmail.com>, relay=[213.x.x.x], reject=550 5.7.1 <username@gmail.com>... Relaying denied. IP name lookup failed [213.x.x.x]
sendmail[25391]: rA4Fp86s025391: from=<admin@mydomain.com>, size=0, class=0, nrcpts=0, proto=ESMTP, daemon=MTA, relay=[213.x.x.x]

Я знаю, что что-то происходит с хостом ретрансляции, но что, если вы не знаете хост ретранслятора !? То есть ... Во всяком случае, вот файл sendmail.mc

divert(-1)dnl
include(`/usr/share/sendmail-cf/m4/cf.m4')dnl
VERSIONID(`setup for linux')dnl
OSTYPE(`linux')dnl
dnl define(`confSMTP_LOGIN_MSG', `$j Sendmail; $b')dnl
dnl define(`confLOG_LEVEL', `9')dnl
dnl define(`SMART_HOST', `smtp.your.provider')dnl
define(`confDEF_USER_ID', ``8:12'')dnl
dnl define(`confAUTO_REBUILD')dnl
define(`confTO_CONNECT', `1m')dnl
define(`confTRY_NULL_MX_LIST', `True')dnl
define(`confDONT_PROBE_INTERFACES', `True')dnl
define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail')dnl
define(`ALIAS_FILE', `/etc/aliases')dnl
define(`STATUS_FILE', `/var/log/mail/statistics')dnl
define(`UUCP_MAILER_MAX', `2000000')dnl
define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl
define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
define(`confAUTH_OPTIONS', `A')dnl
MASQUERADE_AS(mydomain.com)dnl
MASQUERADE_DOMAIN(mydomain.com)dnl
dnl define(`confAUTH_OPTIONS', `A p')dnl
dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confCACERT_PATH', `/etc/mail/certs')dnl
dnl define(`confCACERT', `/etc/mail/certs/CAcert.pem')dnl
dnl define(`confSERVER_CERT', `/etc/mail/certs/MYcert.pem')dnl
dnl define(`confSERVER_KEY', `/etc/mail/certs/MYkey.pem')dnl
dnl define(`confCLIENT_CERT', `/etc/mail/certs/MYcert.pem')dnl
dnl define(`confCLIENT_KEY', `/etc/mail/certs/MYkey.pem')dnl
dnl define(`confDONT_BLAME_SENDMAIL', `groupreadablekeyfile')dnl
dnl define(`confTO_QUEUEWARN', `4h')dnl
dnl define(`confTO_QUEUERETURN', `5d')dnl
dnl define(`confQUEUE_LA', `12')dnl
dnl define(`confREFUSE_LA', `18')dnl
define(`confTO_IDENT', `0')dnl
dnl FEATURE(delay_checks)dnl
FEATURE(`no_default_msa', `dnl')dnl
FEATURE(`smrsh', `/usr/sbin/smrsh')dnl
FEATURE(`mailertable', `hash -o /etc/mail/mailertable.db')dnl
FEATURE(`virtusertable', `hash -o /etc/mail/virtusertable.db')dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(use_ct_file)dnl
dnl define(`confMAX_DAEMON_CHILDREN', `20')dnl
dnl define(`confCONNECTION_RATE_THROTTLE', `3')dnl
FEATURE(`relay_hosts_only')dnl
FEATURE(local_procmail, `', `procmail -t -Y -a $h -d $u')dnl
FEATURE(`access_db', `hash -T<TMPF> -o /etc/mail/access.db')dnl
FEATURE(`blacklist_recipients')dnl
EXPOSED_USER(`root')dnl
dnl define(`confLOCAL_MAILER', `cyrusv2')dnl
dnl define(`CYRUSV2_MAILER_ARGS', `FILE /var/lib/imap/socket/lmtp')dnl
dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl
dnl DAEMON_OPTIONS(`Port=smtps, Name=TLSMTA, M=s')dnl
dnl DAEMON_OPTIONS(`port=smtp,Addr=::1, Name=MTA-v6, Family=inet6')dnl
dnl DAEMON_OPTIONS(`Name=MTA-v4, Family=inet, Name=MTA-v6, Family=inet6')
FEATURE(`accept_unresolvable_domains')dnl
FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl
dnl FEATURE(`relay_based_on_MX')dnl
LOCAL_DOMAIN(`mydomain.com')dnl
dnl MASQUERADE_AS(`mydomain.com')dnl
dnl FEATURE(masquerade_envelope)dnl
dnl FEATURE(masquerade_entire_domain)dnl
dnl MASQUERADE_DOMAIN(localhost)dnl
dnl MASQUERADE_DOMAIN(localhost.localdomain)dnl
dnl MASQUERADE_DOMAIN(mydomainalias.com)dnl
dnl MASQUERADE_DOMAIN(mydomain.lan)dnl
MAILER(smtp)dnl
MAILER(procmail)dnl
dnl MAILER(cyrusv2)dnl

Что я должен делать ? Как узнать, работает ли SMTP-AUTH? TLS?

Спасибо большое за помощь -.-

Для новичков sendmail требует довольно крутого обучения, рекомендуемый MTA - postfix.

Чтобы определить, что sendmail поддерживает в настоящее время; telnet на порт smtp и введите команду help, sendmail отобразит его возможности:

] $ telnet localhost 25

 220 example.com ESMTP Sendmail 8; Mon, 4 Nov 2013 17:27:20 +0100

Помогите

214-2.0.0 This is sendmail
214-2.0.0 Topics:
214-2.0.0       HELO    EHLO    MAIL    RCPT    DATA
214-2.0.0       RSET    NOOP    QUIT    HELP    VRFY
214-2.0.0       EXPN    VERB    ETRN    DSN     AUTH
214-2.0.0       STARTTLS

AUTH означает, что серверы sendmail поддерживают аутентификацию SMTP.

STARTTLS означает, что поддерживается SSL / startTLS.

Чтобы включить оба варианта, вам необходимо изменить конфигурацию sendmail. Файл конфигурации sendmail, скажем так, ясен как грязь. Более простой способ - отредактировать файл макроса sendmail.mc, который можно использовать для генерации функциональной конфигурации sendmail.cf. Строки, начинающиеся с # комментарии, как и строки, начинающиеся с dnl.

Расшифровка следующих трех строк включит SMTP-аутентификацию:

 # /etc/mail/sendmail.mc
 <snip>
 define(`confAUTH_OPTIONS', `A p')dnl
 TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl 
 define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
 <snip>

Чтобы включить TLS / SSL, раскомментируйте следующие строки и убедитесь, что ваши сертификаты (самоподписанные или общедоступные) присутствуют.

define(`confCACERT_PATH', `/etc/mail/certs')dnl
define(`confCACERT', `/etc/mail/certs/CAcert.pem')dnl
define(`confSERVER_CERT', `/etc/mail/certs/MYcert.pem')dnl
define(`confSERVER_KEY', `/etc/mail/certs/MYkey.pem')dnl

Большинство клиентов будут использовать starttls через smtp-порт 25, но вы можете настроить smtp sendmail только на SSL, прослушивая порт 465, раскомментировав:

DAEMON_OPTIONS(`Port=smtps, Name=TLSMTA, M=s')dnl 

убедитесь, что установлены rpm-пакеты sendmail-cf и cyrus-sasl:

 ]#  yum -y install cyrus-sasl sendmail-cf

Создайте новый sendmail.cf из измененного sendmail.mc и перезапустите sendmail.

 ]#  cd /etc/mail ; ./make
 ]#  service sendmail restart

Настройте сервер аутентификации sasl на предпочитаемый вами метод аутентификации для пользователей почты и убедитесь, что он будет работать. (по умолчанию установлено значение pam в / etc / sysconfig / saslauthd)

 ]#  chkconfig saslauthd on
 ]#  service saslauthd start

Теперь, чтобы протестировать SMTPAUTH, мы будем использовать метод PLAIN, мы проверим, показывает ли более ранний тест telnet поддержку метода AUTH.

Если это так, мы попробуем обычный auth. Для этого требуется строка в кодировке base64, содержащая имя пользователя и пароль, разделенные NULL:

 ]$  perl -MMIME::Base64 -e 'print encode_base64("\000USERNAME\000PASSWORD");'
 AFVTRVJOQU1FAFBBU1NXT1JE

Теперь мы можем поймать двух зайцев одним выстрелом, проверить настройку SSL и аутентификацию PLAIN (PLAIN и LOGIN разрешены только через SSL-шифрованные соединения):

 ]$  openssl s_client -starttls smtp -connect example.com:25
 .   <snip more SSL stuff> 
 .   ---
 .   SSL handshake has read 17078 bytes and written 357 bytes
 .   ---
 .   New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
 .   
 EHLO example2.com
 .
 .   250-mail.example.com Hello example2.com [1x.2x.3x.4x], pleased to meet you
 .   250-ENHANCEDSTATUSCODES
 .   250-PIPELINING
 .   250-8BITMIME
 .   250-SIZE
 .   250-DSN
 .   250-ETRN
 .   250-AUTH LOGIN PLAIN
 .   250-DELIVERBY
 .   250 HELP
 .
 AUTH PLAIN AFVTRVJOQU1FAFBBU1NXT1JE

Теперь клиенты, использующие действительную аутентификацию SMTP, могут использовать ваш сервер sendmail для отправки электронной почты.