Sendmail korzystania nullmailer i konta Gmail na serwerze Linux


Original: http://opensourcehacker.com/2013/01/02/sendmail-using-nullmailer-and-gmail-account-on-linux-server/

Po uruchomieniu serwerów VPS lub inne ” low end ” pudełka jest typowy scenariusz trzeba ustawić wychodzącej poczty e-mail agenta transferowego , aby raporty z zadań crona lub włączyć skrypty PHP do wysyłania e-maili.

Linux oferuje kilka naprawdę ciężkich opcje wagi do wysyłania e-mail , w tym Sendmail , Postfix i exim4 . Jednakże , jeśli jesteśniski użytkownik box end , uruchomić niskie usługi koniec którego wymagania są może wysłać jedną wiadomość na miesiąc z mizernych cron lub formularza kontaktowego internetowej. To sprawia, że ​​powyższych opcji

  • Ploska przerażające
  • Bardzo trudny w konfiguracji, utrzymania , ze względu na dodatkową złożoność nie jest to konieczne dla przypadku użycia
  • Otwórz jakiś ataku
  • Trzeba jeszcze mistrzem SMTP gdzie można przyśpieszyć wiadomości e-mail

Nie zredukować .

Poznaj nullmailer . Nullmailer jestprosta MTA ( Mail Transfer Agent ) , a dostawca polecenie sendmail który po prostu zrzuca Twój email doczekać wyjścia usługi SMTP.

Ale to nie wszystko . Jeśli używasz niskie bloki końcowe prawdopodobnie nie potrzebują dobrej usługi SMTP od dostawcy VPS ( spam sprawia, że ​​kosztowne świadczenia ) . Więc tutaj jesttrick: prawdopodobnie używasz już bezpłatny dostawcą poczty internetowej , takich jak Gmail , Hotmail czy cokolwiek dzieje sięwyróżniającym firma internet dnia. Nullmailer może być skonfigurowany do korzystania z poświadczoną SMTP wysyłanie za pośrednictwem dowolnego dostawcy poczty e-mail dość łatwo.

Poniżej jestskrypt instalacyjny dla Ubuntu / Debian (testowane na Ubuntu 12.04 LTS ) , który ustawia xinetd tunel połączyć się smtp.google.com Gmail i wysyłać e-maile jako uwierzytelnionego użytkownika Gmail . Orignal pomysł jest opisane w tym blogu Jon Spriggs .

Minusem tego hacky rozwiązania obejmują

  • Nie ma prawdziwych adresów e-mail From : all e-mail jest aliasem do authentcated użytkownika SMTP
  • Hasło SMTP jest przechowywana na serwerze jako zwykły tekst , więc prawdopodobnie chcesz stworzyć fałszywe Gmaila dla tego
  • No lokalnie buforowane email (nie wiem o tym z nullmailer ? ) – Jeśli SMTP działa dziwnie być przygotowany do poważnej zepsuć
  • Korzystanie z polecenia sendmail z tego rozwiązania mogą powodować opóźnienia i inne utrudnienia w skrypcie (nie wiem jak timeouting jest traktowane z nullmailer ? )
  • Skrypt jest również dostępny na Github , zorganizowanej wewnątrz projektu ZtaneSH . Proszę przyczynić zmiany z powrotem na Githubie w przypadku, można natknąć się na poprawę sytuacji .

Nic innego nie jest konieczna , z wyjątkiem wykonywania skryptu zgodnie z instrukcją.

#!/bin/bash
#
# Setup nullmailer on Ubuntu using your Gmail account as SMTP
# - you get a working sendmail command without requiring to setup complex SMTP
# stuff. Mostly useful with cron scripts.
#
# Orignal script based on https://jon.sprig.gs/blog/post/9
#

# Abort script if any command fails
set -e

#
# Create a gmail SSL wrapper script
#

if [ -z "$GMAIL_USER" ] || [ -z "$GMAIL_PASSWORD" ] || [ -z "$TEST_ADDRESS" ] ; then
    echo "Setup sendmail via gmail proxy on your Ubuntu box"
    echo "Usage:"
    echo "[email protected] GMAIL_PASSWORD=12312312 [email protected] sh setup-nullmailer.sh"
    exit 1
fi

# install required software
sudo apt-get install -y openssl xinetd nullmailer

sudo tee /usr/bin/gmail-smtp <<EOF >/dev/null
#!/bin/sh
/usr/bin/openssl s_client -connect smtp.gmail.com:465 -quiet 2>/dev/null
EOF
sudo chmod +x /usr/bin/gmail-smtp

#
# Create xinetd.d entry which wraps SMTP traffic to port 10025 go
# go to gmail
#

sudo tee /etc/xinetd.d/gmail-smtp <<EOF >/dev/null
# default: on
# description: Gmail SMTP wrapper for clients without SSL support
# Thanks to http://ubuntuforums.org/showthread.php?t=918335 for this install guide
service gmail-smtp
{
    disable         = no
    bind            = localhost
    port            = 10025
    socket_type     = stream
    protocol        = tcp
    wait            = no
    user            = root
    server          = /usr/bin/gmail-smtp
    type            = unlisted
}
EOF
sudo /etc/init.d/xinetd reload

#
# Set nullmail to use xinetd
#
sudo tee /etc/nullmailer/remotes <<EOF >/dev/null
127.0.0.1 smtp --port=10025 --user=$GMAIL_USER --pass=$GMAIL_PASSWORD
EOF
sudo /etc/init.d/nullmailer reload

# send test email
echo "This is a test message from ${USER}@${HOSTNAME} at $(date)" | sendmail $TEST_ADDRESS

echo "Test mail send to $TEST_ADDRESS"

Comments are closed.