ubuntu: mengirimkan mail saat shutdown & restart


saya punya 3 mesin ubuntu yang headless, alias tidak terpasang monitor dan bahkan papan ketik ataupun tetikus. ketiga mesin ini tersebar di tiga tempat yang berbeda, dan saya ingin agar jika mesin tersebut melakukan shutdown atau restart, saya diberitahukan melalui mail. untuk kepentingan mengirimkan mail, dulu saya menggunakan nullmailer dengan relay gmail, namun sejak gmail mewajibkan menggunakan TLS, nullmailer tidak bisa dipergunakan lagi.
agar bisa memanfaatkan gmail sebagai relay, maka saya akan menggunakan dovecot-postfix:
[sourcecode language=”bash”]
sudo aptitude -y install dovecot-postfix
[/sourcecode]
setelah itu akan muncul layar setting:
Screen Shot 2012-12-10 at 11.59.54 AM
karena saya hanya ingin mengirim mail keluar dan bukan menerima mail, saya pilih Satellite system:

berikutnya isikan nama FQDN (Fully Qualified Domain Name) dari mesin, sesuaikan dengan nama mesin dan di mana jaringan anda berada:

isikan smtp.gmail.com:587 sebagai SMTP relay host:

isikan alamat mail yang akan menerima mail untuk root dan postmaster:

isikan nama mesin/domain yang akan diterima oleh mesin ini sebagai tujuan akhir:

synchronous updates biarkan pada kondisi default:

karena hanya akan digunakan untuk mengirimkan mail dari mesin itu sendiri, untuk isian network blocks biarkan dalam kondisi default, dengan demikian mesin tersebut tidak akan melakukan relay mail dari mesin lain:

batas berkas mailbox saya biarkan dalam kondisi default alias no limit:

local address extension biarkan dalam kondisi default:

biarkan dalam kondisi default untuk protokol internet yang akan digunakan:

selesai sudah proses dpkg-reconfigure. sekarang sunting berkas /etc/postfix/main.cf:
[sourcecode language=”bash”]
sudo nano /etc/postfix/main.cf
[/sourcecode]
lalu tambahkan baris-baris berikut ini:
[sourcecode language=”bash”]
smtp_tls_loglevel=1
smtp_tls_security_level=encrypt
smtp_sasl_auth_enable=yes
smtp_sasl_password_maps=hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
[/sourcecode]
sekarang menambahkan informasi akun gmail yang akan digunakan untuk melakukan relay:
[sourcecode language=”bash”]
sudo nano /etc/postfix/sasl_passwd
[/sourcecode]
formatnya adalah nama.server:port alamat@mail:password:
[sourcecode language=”bash”]
smtp.gmail.com:587 nama.akun@gmail.com:password
[/sourcecode]
lakukan hashing terhadap berkas tadi:
[sourcecode language=”bash”]
sudo postmap /etc/postfix/sasl_passwd
[/sourcecode]
lalu demi keamanan anda bisa menghapus berkas teks sasl_passwd tadi. sekarang cek /etc/aliases, apakah akun postmaster dan root sudah benar aliasnya. kalau belum, silakan sunting lalu perbaiki, lalu jalankan perintah:
[sourcecode language=”bash”]
sudo newaliases
sudo service postfix reload
[/sourcecode]
sekarang tes apakah sudah bisa mengirimkan mail atau belum:
[sourcecode language=”bash”]
echo "ini tes kirim mail" | mail -s "testing" root
[/sourcecode]
jika semua setting sudah benar, maka anda akan menerima mail pada akun mail yang sudah didefinisikan dalam /etc/aliases tadi.
sekarang membuat script untuk mengirimkan mail saat shutdown dan reboot:
[sourcecode language=”bash”]
sudo nano /etc/init.d/SystemEmail
[/sourcecode]
isikan berkas tersebut dengan baris-baris berikut ini:
[sourcecode language=”bash”]
#!/bin/sh
### BEGIN INIT INFO
# Provides: SystemEmail
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Send email
# Description: Sends an email at system start and shutdown
### END INIT INFO
EMAIL="root"
RESTARTSUBJECT="["`hostname`" "`date`"] – System Startup"
SHUTDOWNSUBJECT="["`hostname`" "`date`"] – System Shutdown"
RESTARTBODY="This is an automated message to notify you that "`hostname`" started successfully. Start up Date and Time: "`date`
SHUTDOWNBODY="This is an automated message to notify you that "`hostname`" is shutting down. Shutdown Date and Time: "`date`
LOCKFILE=/var/lock/SystemEmail
RETVAL=0
# Source function library.
. /lib/lsb/init-functions
stop()
{
echo -n "Sending Shutdown Email: "
echo "${SHUTDOWNBODY}" | mail -s "${SHUTDOWNSUBJECT}" ${EMAIL}
sleep 4
RETVAL=$?
sleep 4
if [ ${RETVAL} -eq 0 ]; then
rm -f ${LOCKFILE}
sleep 4
log_success_msg
else
log_failure_msg
fi
echo
return ${RETVAL}
}
start()
{
echo -n "Sending Startup Email: "
echo "${RESTARTBODY}" | mail -s "${RESTARTSUBJECT}" ${EMAIL}
RETVAL=$?
if [ ${RETVAL} -eq 0 ]; then
touch ${LOCKFILE}
log_success_msg
else
log_failure_msg
fi
echo
return ${RETVAL}
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
echo "Not applied to service"
;;
restart)
stop
start
;;
reload)
echo "Not applied to service"
;;
condrestart)
#
echo "Not applied to service"
;;
probe)
;;
*)
echo "Usage: SystemEmail{start|stop|status|reload|restart[|probe]"
exit 1
;;
esac
exit ${RETVAL}
[/sourcecode]
simpan berkas tersebut, lalu pastikan berkas tersebut bisa dieksekusi:
[sourcecode language=”bash”]
sudo chmod u+x /etc/init.d/SystemEmail
[/sourcecode]
daftarkan berkas tersebut agar dieksekusi saat restart maupun shutdown:
[sourcecode language=”bash”]
sudo update-rc.d SystemEmail start 98 2 3 4 5 . stop 02 0 1 6 .
[/sourcecode]
sekarang uji coba apakah script tadi bisa berjalan baik atau tidak:
[sourcecode language=”bash”]
sudo service SystemEmail start
[/sourcecode]
jika semuanya berjalan lancar, maka anda akan menerima mail pemberitahuan bahwa server anda baru menyala. sebenarnya semuanya sudah selesai sampai di sini, namun kadang saat melakukan shutdown server keburu mati sebelum sempat mengirimkan mail, maka tambahkan delay secukupnya pada /etc/init.d/postfix agar mail sempat terkirim (saya menambahkan baris sleep 12):

referensi:

, ,

2 responses to “ubuntu: mengirimkan mail saat shutdown & restart”

  1. ada banyak cara sebenarnya, saya biasanya pake phpmailer, terus run phpmailer lewat console dan init daemon dengan sedikit mainan bash script

  2. Hello and thanks! Now with debian 7 and insserv, how I set order of /etc/rc1.d keep the script run before postfix? Thanks!
    Pol

Leave a Reply

Your email address will not be published. Required fields are marked *