Vinculación de GCP Compute Engine con el servicio de retransmisión SMTP de Google Suite

Vinculación de GCP Compute Engine con el servicio de retransmisión SMTP de Google Suite

Recientemente queremos conectar GCP Compute Engine con el servicio de correo electrónico de la suite de Google. en estodocumentacióndijo eso

Google Compute Engine no permite conexiones salientes en el puerto 25. De forma predeterminada, el SMTP saliente está bloqueado debido a la gran cantidad de abuso al que es susceptible el SMTP de servidor a servidor. Además, contar con un proveedor externo de confianza, como SendGrid, Mailgun o Mailjet, evita que Compute Engine y usted mantengan la reputación de IP con sus receptores.

Nuestra idea es que teníamos un script php y lo ejecutábamos en httpd/apache, que tenía la función mailde enviar un correo electrónico a nuestro equipo de ventas como se muestra a continuación.

$mail = mail($siteOwnersEmail, $subject, $message, $headers);

y utilice sendmail para transmitir al servicio smtp de google. Nuestro motor informático se ejecuta en Centos 7. No consideramos a otros terceros confiables como recomendaciones de Google como SendGrid, MailGuny MailJetporque ya usamos Google Suite.

De otrocorreo, conectar Compute Engine y Google Suite es difícil de hacer. Necesitamos tu ayuda para lograrlo.

Tuvimos que configurar sendmail como se muestra a continuación.

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', `relay-smtp.gmail.com')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
dnl define(`RELAY_MAILER_ARGS', `TCP $h 587′)dnl
dnl define(`ESMTP_MAILER_ARGS', `TCP $h 587′)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/pki/tls/certs')dnl
dnl define(`confCACERT', `/etc/pki/tls/certs/ca-bundle.crt')dnl
dnl define(`confSERVER_CERT', `/etc/pki/tls/certs/sendmail.pem')dnl
dnl define(`confSERVER_KEY', `/etc/pki/tls/certs/sendmail.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 define(`confINET_QOS', `AF11')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(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
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
dnl FEATURE(`relay_based_on_MX')dnl
LOCAL_DOMAIN(`localhost.localdomain')dnl
dnl MASQUERADE_AS(`qreatiq.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

y ya configuré SELinux como se muestra a continuación

setsebool httpd_can_sendmail on 

Generando certificado

cd /etc/pki/tls/certs
make sendmail.pem

Cree un archivo de autenticación que se utilizará para la autenticaciónsmtp.gmail.com

mkdir /etc/mail/auth
chmod 700 /etc/mail/auth 

crear archivo de información del cliente

AuthInfo:smtp.gmail.com “U:smmsp” “I:gmail_address” “P:password” “M:PLAIN”
AuthInfo:smtp.gmail.com:587 “U:smmsp” “I:gmail_address” “P:password” “M:PLAIN”

y hacer

makemap -r hash client-info.db < client-info
chmod 600 client-info client-info.db

editar alias

root:email_address

agregue apacheusuario en usuario confiable y ejecutenewaliases

Luego intenté enviar un correo electrónico usando este código.

echo ‘this is a test’| mail -s test_email [email protected]

Y el registro de cek en /var/log/maillogel estado deferred because connection timeout with aspmx2.googlemail.comaquí es un seguimiento completo de la pila.

Aug 30 06:54:03 gcp***-***a sendmail[14979]: w7U6s31m014979: to=system@*****.com, ctladdr=a*****g_imannuel (1001/1002), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30234, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (w7U6s3QN014980 Message accepted for delivery)
Aug 30 06:59:03 gcp***-***a sendmail[14982]: w7U6s3QN014980: to=<system@*****.com>, ctladdr=<a*****g_imannuel@gcp***-***a.c.calm-ca***-XXX.internal> (1001/1002), delay=00:05:00, xdelay=00:05:00, mailer=esmtp, pri=120537, relay=aspmx2.googlemail.com. [173.194.66.26], dsn=4.0.0, stat=Deferred: Connection timed out with aspmx2.googlemail.com.

e inicie sesión en /var/log/messages solo sesión que comienza para ssh.

Además, aquí está el servicio de retransmisión SMTP en nuestra suite de Google.

Allowed senders: Any addresses (not recommended)
Only accept mail from the specified IP addresses: Yes
Allowed IP addresses: www.****.com
Require SMTP Authentication: Yes
Require TLS encryption: No

Verifique Google Suite: aplicaciones de Gmail y el correo electrónico nunca se envía al remitente. Muy triste. ¿Alguien sabe cuál es el problema?

Respuesta1

Usar sendmail aquí complica enormemente las cosas (y probablemente aún querrá usar el puerto 25 de todos modos). Simplemente siga las instrucciones aquí:https://support.google.com/a/answer/2956491?hl=enpara configurar GSuite para retransmitir correo electrónico, usar autenticación y usar el puerto 587 para enviar.

Tampoco puedes usar la función PHP mail() incorporada (y probablemente nadie debería hacerlo nunca). Utilice PEAR::Mail en su lugar:http://pear.php.net/manual/en/package.mail.mail.php- ese paquete le permite configurar el host/puerto, etc.

información relacionada