Αποστολή μηνυμάτων αλληλογραφίας από εφαρμογές PHP


Για λόγους ασφαλείας, η χρήση της ενδογενούς συνάρτησης mail() της PHP δεν υποστηρίζεται. Συγκεκριμένα παρατηρήθηκε μεγάλος αριθμός μηνυμάτων spam από τις PHP εφαρμογές στους δικτυακούς τόπους των χρηστών. Η αιτία για το φαινόμενο αυτό είναι η έλλειψη μηχανισμών ασφαλείας στα διάφορα CMS ή στις εφαρμογές των χρηστών, έχοντας ως αποτέλεσμα διάφορα robots να καλούν τις φόρμες αποστολής μηνυμάτων των χρηστών και να αποστέλλουν ενοχλητική αλληλογραφία.

Για το λόγο αυτό η αποστολή των μηνυμάτων από web εφαρμογές, και συγκεκριμένα από PHP, γίνεται πλέον με την χρήση ενός νέου μηχανισμού. Ο μηχανισμός, διευκολύνει τον εντοπισμό της προέλευσης ενδεχόμενων ενοχλητικών μηνυμάτων, αφού για την αποστολή τους απαιτείται η πιστοποίηση της ταυτότητας του χρήστη. Έτσι σε περίπτωση που παρατηρηθεί κάποιο πρόβλημα μπορούμε να ενημερώσουμε τον κάτοχο του δικτυακού τόπου ώστε να προβεί στις κατάλληλες διορθωτικές ενέργειες.

Τα βασικά σημεία του μηχανισμού αυτού είναι τα ακόλουθα.

  1. Απόκτηση των στοιχείων σύνδεσης για την αποστολή αλληλογραφίας
  2. Αποστολή μηνυμάτων από εφαρμογές χρηστών
  3. Ασφαλής τρόπος αποστολής μηνυμάτων από web φόρμες
  4. Αποστολή μηνυμάτων από διάφορα CMS (Joomla, WordPress κλπ)

 

Απόκτηση των στοιχείων σύνδεσης για την αποστολή αλληλογραφίας

Για να αποκτήσετε στοιχεία σύνδεσης SMTP μεταβείτε στο δικτυακό τόπο του ΠΣΔ www.sch.gr και αφού συνδεθείτε μεταβείτε στην σελίδα mySch .Εκεί αφού πιστοποιηθείτε εκ νέου πατήστε στο Αποστολή email από τον ιστότοπό σας.

 

Τα στοιχεία που χρειάζεστε και θα βρείτε εκεί είναι:

  • Ο διακομιστής αλληλογραφίας (host): websitemail.sch.gr
  • To όνομα χρήστη (username)
  • Ο κωδικός αποστολής μηνυμάτων
  • Το e-mail του αποστολέα

Πατήστε το κουμπί "Ανανέωση κωδικού" αν δεν υπάρχει ήδη ορισμένος κωδικός και το κουμπί Αποθήκευση για να ενεργοποιηθεί η δυνατότητα αυτή στον λογαριασμό σας.

Παρατηρήσεις:

  1. Ο διακομιστής αλληλογραφίας αυτός χρησιμοποιείται μόνο για τις web εφαρμογές.
  2. Το όνομα χρήστη που χρησιμοποιείται για την πιστοποίηση είναι το username του Πανελλήνιου Σχολικού Δικτύου για τον χρήστη
  3. Ο κωδικός αποστολής μηνυμάτων (websitemailPassword) είναι διαφορετικός από τον κωδικό πρόσβασης του χρήστη για το Πανελλήνιο Σχολικό Δίκτυο και ο χρήστης μπορεί να τον τροποποιήσει από το mySch.
  4. Το email του αποστολέα πρέπει να είναι το email του χρήστη για το Πανελλήνιο Σχολικό Δίκτυο, δηλαδή <username>@sch.gr.
  5. H κατάσταση (websitemailStatus) σε κανονικές συνθήκες είναι συνήθως "Ενεργή", αλλά μπορεί να δηλώνει την αιτία της διακοπής της αποστολής αλληλογραφίας σε περιπτώσεις που έχει παρατηρηθεί κάποιο πρόβλημα.

Αποστολή μηνυμάτων αλληλογραφίας από εφαρμογές χρηστών

Για την αποστολή των μηνυμάτων αλληλογραφίας μέσω των εφαρμογών web υπάρχει η δυνατότητα χρήσης της βιβλιοθήκης PHPMailer (https://github.com/PHPMailer/PHPMailer) . Η βιβλιοθήκη αυτή υποστηρίζει τη χρήση SMTP διακομιστή για την αποστολή των μηνυμάτων και τη δυνατότητα πιστοποίησης χρήστη (SMTP Authentication), καθώς και μια σειρά από εξελιγμένα χαρακτηριστικά όπως η αποστολή συνημμένων κλπ.

Αναλυτικές πληροφορίες για τη χρήση της θα βρείτε στο σύνδεσμο https://github.com/PHPMailer/PHPMailer/wiki/Tutorial.

Στο παράδειγμα που ακολουθεί παρουσιάζεται ο ελάχιστος κώδικας PHP που απαιτείται για την αποστολή ενός μηνύματος αλληλογραφίας μέσω της PHPMailer και του Πανελλήνιου Σχολικού Δικτύου.

 

Κλικ για κατέβασμα κώδικα

 

Παρατηρήσεις:

  1. Το όνομα χρήστη που χρησιμοποιείται για την πιστοποίηση είναι το username του Πανελλήνιου Σχολικού Δικτύου για το χρήστη (Γραμμή 9).
  2. Ο κωδικός αποστολής μηνυμάτων (websitemailPassword) (Γραμμή 10) είναι διαφορετικός από το συνθηματικό του χρήστη για το Πανελλήνιο Σχολικό Δίκτυο και ο χρήστης μπορεί να ενημερωθεί γι αυτόν και να τον τροποποιήσει, μέσω του mySch.
  3. Το email του αποστολέα (Γραμμή 12) πρέπει να είναι το email του χρήστη για το Πανελλήνιο Σχολικό Δίκτυο, δηλαδή <username>@sch.gr.
  4. Η κωδικοποιήση χαρακτήρων για το μήνυμα (Γραμμή 17) πρέπει να συμβαδίζει με την κωδικοποιήση που χρησιμοποιείται από την HTML σελίδα. Συνηθισμένες επιλογές είναι οι ISO-8859-7 και UTF-8, ανάλογα τι χρησιμοποιείτε στην εφαρμογή σας.

Περισσότερες και αναλυτικότερες πληροφορίες στο επίσημο δικτυακό τόπο της βιβλιοθήκης PHPMailer

https://github.com/PHPMailer/PHPMailer/wiki/Tutorial

Προσοχή η αποστολή μηνυμάτων μέσω φορμών στις ιστοσελίδες σας δεν θεωρείται καλή πρακτική αν δεν συνδυάζεται με έλεγχο ασφαλείας (πχ captcha).

 

Χρήση εικόνας captcha στις φόρμες για την αποτροπή spam μηνυμάτων

Το CAPTCHA (Completely Automated Turing Test To Tell Computers and Humans Apart) είναι ένα πρόγραμμα το οποίο μπορεί να δημιουργεί και να αξιολογεί δοκιμασίες τις οποίες ο άνθρωπος μπορεί να φέρει εις πέρας, σε αντίθεση με έναν υπολογιστή. Για παράδειγμα, ο άνθρωπος μπορεί να διακρίνει εύκολα τα αλφαριθμητικά της ακόλουθης εικόνας, σε αντίθεση με ένα πρόγραμμα υπολογιστή.

 

Captcha

 

Η μέθοδος αυτή χρησιμοποιείται πλέον για την προστασία των φορμών web, αποτρέποντας τα robots να εισάγουν δεδομένα ανεξέλεγκτα σε αυτές, αλλά και στο περιορισμό των μηνυμάτων spam τα οποία αποστέλλονται από ανάλογες φόρμες.

Το Πανελλήνιο Σχολικό Δίκτυο παρέχει στους χρήστες του την δυνατότητα ενσωμάτωσης μιας εικόνας captcha στις ιστοσελίδες που περιέχουν φόρμες εισαγωγής και αποστολής μηνυμάτων, ώστε προλαμβάνεται η ανεπιθύμητη εισαγωγή ή αποστολή δεδομένων (spam), μέσω αυτών. Η εικόνα αυτή δημιουργείται δυναμικά από τον Διακομιστή Ιστοσελίδων (Web Server) και διατίθεται άμεσα σε οποιονδήποτε χρήστη επιθυμεί να την χρησιμοποιήσει στην ιστοσελίδα του.

Μια τυπική χρήση της τεχνικής αυτής παρουσιάζεται στον παρακάτω κώδικα. Αυτός μπορεί να τοποθετηθεί σε μια φόρμα δημιουργώντας ένα πεδίο εισαγωγής κειμένου και την εικόνα CAPTCHA

 

Κλικ για κατέβασμα κώδικα

Ο χρήστης που συμπληρώνει την φόρμα υποχρεώνεται να αντιγράψει το αλφαριθμητικό που παρουσιάζεται στην εικόνα στο αντίστοιχο πεδίο εισαγωγής κειμένου.

Όταν η φόρμα καταχωρείται ελέγχεται αν τα δύο αυτά αλφαριθμητικά είναι όμοια. Μόνο σε αυτή την περίπτωση η διαδικασία συνεχίζεται, ενώ αν δεν συμπίπτουν τότε η διαδικασία σταματά. Στον Κώδικα 3 παρουσιάζεται η δομή ενός τυπικού ελέγχου για την επεξεργασία των δεδομένων μιας web φόρμας.

 

Κλικ για κατέβασμα κώδικα

 

Κατά την καταχώρηση μια φόρμας, πρέπει αρχικά να εκκινήσει μια σύνοδος (session). Στις μεταβλητές συνόδου έχει οριστεί, αυτόματα από την χρήση της εικόνας CAPTCHA, η μεταβλητή $_SESSION["captcha"], η οποία περιέχει το αλφαριθμητικό της εικόνας κατά τη δημιουργία αυτής. Αρκεί να ελεγχθεί αν το αλφαριθμητικό της προαναφερθείσας session μεταβλητής και εκείνο που εισήγαγε ο χρήστης είναι όμοια.

Χρήση κρυφού πεδίου φόρμας για την αποτροπή spam μηνυμάτων

Ένας άλλος τρόπος για την αποφυγή των spam μηνυμάτων είναι να γίνει χρήση ενός επιπλέων πεδίου εισαγωγής κειμένου στη φόρμα, το οποίο μέσω CSS (Cascading StyleSheet) θα είναι αόρατο στο χρήστη. Όταν καταχωρείται η φόρμα, το PHP script που την χειρίζεται ελέγχει αν το εν λόγω πεδίο περιέχει κάποια πληροφορία. Αν το πεδίο αυτό είναι συμπληρωμένο σημαίνει πως δεν έχει συμπληρωθεί από κάποιον άνθρωπο, αφού δεν είναι εμφανές γι αυτόν, και το PHP script διακόπτει την καταχώρηση της φόρμας.

Στον κώδικα HTML που ακολουθεί παρουσιάζεται ένα παράδειγμα χρήσης της τεχνικής αυτής.

 

Κλικ για κατέβασμα κώδικα

 

Το PHP script που διαχειρίζεται την φόρμα αυτή ελέγχει αν το κρυφό πεδίο έχει συμπληρωθεί. Στο ενδεχόμενο που περιέχει πληροφορία διακόπτει τη διαδικασία αποστολής email. Σε αντίθετη περίπτωση, το script συνεχίζει με την αποστολή μηνύματος.

 

Ρυθμίσεις για αποστολή αλληλογραφίας μέσω CMS (Joomla, WordPress)

Για τα διάφορα CMS, που κυκλοφορούν και υποστηρίζουν την αποστολή μηνυμάτων αλληλογραφίας, προτείνεται η χρήση αποστολής μέσω SMTP και όχι μεσω sendmail ή PHP mail function.

Συγκεκριμένα, πρέπει να επιλέγεται το SMTP, με ενεργοποιημένο το Authentication, για το οποίο χρησιμοποιείται ως όνομα χρήστη και διεύθυνση email αυτά που χρησιμοποιούνται για το ΠΣΔ και ως κωδικό αποστολής μηνυμάτων τον ειδικό κωδικό για τον οποίο μπορεί να πληροφορηθεί ο χρήστης από το mySch.

Joomla

Το CMS Joomla παρέχει την δυνατότητα αποστολής μηνυμάτων αλληλογραφίας μέσω SMTP server. Συγκεκριμένα για παρέχεται η δυνατότητα αποστολής μηνυμάτων από μια εφαρμογή Joomla ο χρήστης πρέπει να δηλώσει τα τον διακομιστή SMTP και τα απαιτούμενα στοιχεία για την πιστοποίησή του.

Αναλυτικότερα, από το μενού στη σελίδα διαχείρισης του Joomla, επιλέγετε Site και GlobalConfiguration και στη συνέχεια από το υπο-μενού, που εμφανίζεται, το Server. Στη σελίδα που εμφανίζεται και στην περιοχή της MailSettings πραγματοποιείτε την εισαγωγή των στοιχείων σας. Στην εικόνα που ακολουθεί παρουσιάζεται ένα παράδειγμα ορισμού χρήσης SMTP από το Joomla.

 

 

Παρατηρήσεις:

  1. Στο πεδίο SMTP Username τοποθετείται το όνομα χρήστη για το Πανελλήνιο Σχολικό Δίκτυο.
  2. Στο πεδίο Mail From εισάγεται το email του χρήστη που χρησιμοποιεί τον SMTP server.
  3. Στο πεδίο SMTP Password εισάγεται ο κωδικός αποστολής μηνυμάτων (websitemailPassword).

WordPress

Στην περίπτωση χρήσης του WordPress, για την αποστολή μηνυμάτων αλληλογραφίας, θα πρέπει να ενεργοποιήσετε κάποιο πρόσθετο που επιτρέπει την χρήση SMTP. Μερικά από αυτά είναι τα πρόσθετα: