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:
sudo aptitude -y install dovecot-postfix
setelah itu akan muncul layar setting:
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:
sudo nano /etc/postfix/main.cf
lalu tambahkan baris-baris berikut ini:
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
sekarang menambahkan informasi akun gmail yang akan digunakan untuk melakukan relay:
sudo nano /etc/postfix/sasl_passwd
formatnya adalah nama.server:port alamat@mail:password:
smtp.gmail.com:587 nama.akun@gmail.com:password
lakukan hashing terhadap berkas tadi:
sudo postmap /etc/postfix/sasl_passwd
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:
sudo newaliases sudo service postfix reload
sekarang tes apakah sudah bisa mengirimkan mail atau belum:
echo "ini tes kirim mail" | mail -s "testing" root
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:
sudo nano /etc/init.d/SystemEmail
isikan berkas tersebut dengan baris-baris berikut ini:
#!/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}
simpan berkas tersebut, lalu pastikan berkas tersebut bisa dieksekusi:
sudo chmod u+x /etc/init.d/SystemEmail
daftarkan berkas tersebut agar dieksekusi saat restart maupun shutdown:
sudo update-rc.d SystemEmail start 98 2 3 4 5 . stop 02 0 1 6 .
sekarang uji coba apakah script tadi bisa berjalan baik atau tidak:
sudo service SystemEmail start
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: