Postfix, VPN και smarthost: η ουρά δεν είναι firewall
Η ουρά κρατά το mail, το firewall αποφασίζει τη διαδρομή. Κρατήστε το relay σταθερό, επιβάλετε παράδοση μόνο μέσω VPN στο επίπεδο δικτύου και αντιμετωπίστε την αναβολή ως προγραμματισμό.
Το να κρατάς το mail σε ουρά μέχρι να σηκωθεί το VPN είναι πρόβλημα προγραμματισμού, και η συνηθισμένη λύση είναι να σταματήσεις το Postfix, να αλλάξεις το main.cf και να το ξεκινήσεις ξανά. Αυτό δουλεύει, και είναι το λάθος σχήμα, γιατί ανακατεύει δύο απαιτήσεις: πότε πρέπει να επιχειρηθεί η παράδοση και ποια διαδρομή δικτύου επιτρέπεται να τη μεταφέρει. Η δεύτερη είναι απόφαση firewall, και καμία οδηγία του Postfix δεν μπορεί να την πάρει. Μόλις χωριστούν οι δύο, η καθεμία έχει μια μικρή και ελέγξιμη απάντηση.
Κρατήστε σταθερό τον προορισμό του relay, μπλοκάρετε την άμεση παράδοση στο όριο του δικτύου και αφήστε την ουρά να κάνει την αναμονή.
Δύο απαιτήσεις που οι άνθρωποι τις συγχωνεύουν σε μία
Το relay λέει στο Postfix πού να παραδώσει το mail, ενώ το relayhost = [smtp.corp.example]:587 ονομάζει έναν host και μια θύρα, με αγκύλες που καταργούν την επιλογή βάσει MX για αυτό το επόμενο άλμα. Η διαδρομή λέει στον πυρήνα πού επιτρέπεται να πάνε τα πακέτα. Ένα σωστό relayhost χωρίς περιορισμό διαδρομής αφήνει ακόμη το Postfix να φτάσει στο διαδίκτυο απευθείας όταν ο πίνακας δρομολόγησης το επιτρέπει, και ένα σωστό firewall με λάθος relayhost στέλνει το mail στο λάθος μέρος. Κανένα δεν συνεπάγεται το άλλο.
Οι χάρτες μεταφοράς, οι παρακάμψεις ανά αποστολέα και τα εφεδρικά relay αξίζουν την ίδια ανάγνωση. Ένα σταθερό relayhost δεν είναι απόδειξη ότι κάθε ρυθμισμένη διαδρομή παράδοσης το χρησιμοποιεί, και μια εφεδρική διαδρομή που παρακάμπτει το relay είναι η ίδια αποτυχία με καλύτερο καμουφλάζ.
Τι κάνει στην πραγματικότητα το defer_transports
Το defer_transports κρατά μηνύματα για τις ονομασμένες μεταφορές, ώστε να μην γίνεται καμία προσπάθεια παράδοσης μέχρι να τις αγγίξει ένα πέρασμα της ουράς. Είναι έλεγχος προγραμματισμού, και ένα ξέπλυμα της ουράς το υπερισχύει· αυτός είναι ο σχεδιασμός και όχι ελάττωμα. Χρησιμοποιήστε τα πραγματικά ονόματα μεταφορών από το master.cf, γιατί μια προσαρμοσμένη μεταφορά ή μια ξεχωριστά ονομασμένη μεταφορά relay δεν καλύπτεται μόνο και μόνο επειδή το πρόγραμμά της μιλά και SMTP. Η συνηθισμένη επανάληψη είναι άλλος μηχανισμός: με διαδρομή fail-closed, οι προσπάθειες παράδοσης απλώς αποτυγχάνουν και μένουν στην ουρά, χωρίς καμία οδηγία αναβολής.
Οι μόνιμες αποτυχίες δεν περιμένουν ευγενικά. Ένας κακός παραλήπτης ή ένα απορριφθέν διαπιστευτήριο επιστρέφει ή κολλάει ως σκληρό σφάλμα αντί να κάθεται μέχρι να εμφανιστεί το τούνελ, οπότε μια ουρά γεμάτη αναβλημένο mail δεν είναι αυτόματα ασφαλής ουρά.
Επιβάλετε τη διαδρομή στο επίπεδο δικτύου
Ο περιορισμός ανήκει στο όριο της τοπικής εξόδου ή μέσα σε ένα απομονωμένο network namespace. Πρέπει να καλύπτει τις πραγματικές διευθύνσεις του relay, τη μεταφορά και τη θύρα, συμπεριλαμβανομένου του IPv6 αν είναι ενεργό, γιατί ένας κανόνας που μπλοκάρει το TCP 25 δεν κάνει τίποτα για ένα relay στη 587 ή στη 465. Κρατήστε το loopback και τις τοπικές διαδρομές υποβολής χωριστά, ώστε η ίδια η ουρά να συνεχίσει να δουλεύει. Η πολιτική πρέπει να μένει κλειστή όταν η διαδρομή του τούνελ εξαφανίζεται ή επανεμφανίζεται κάτω από άλλο όνομα διεπαφής.
Ένα συμβάν ανόδου της διεπαφής δεν αποδεικνύει ότι το relay είναι προσβάσιμο μέσω αυτής. Γι' αυτό ένα hook που ελέγχει τον σύνδεσμο και μετά ξεπλένει την ουρά είναι ευκολία και όχι εγγύηση: ο σύνδεσμος μπορεί να αλλάξει ανάμεσα στον έλεγχο και την προσπάθεια παράδοσης.
Αποδείξτε το με ένα ακίνδυνο μήνυμα
Στείλτε ένα ακίνδυνο μήνυμα με το VPN κάτω, και μετά ελέγξτε το postqueue -p για τον λόγο αναβολής και το ID της ουράς. Επαναφέρετε τη σωστή διαδρομή και ζητήστε ελεγχόμενο πέρασμα της ουράς, παρατηρώντας αν το μήνυμα φεύγει μέσω του relay και όχι κάπου αλλού. Μετά σπάστε πάλι τη διαδρομή εν πτήσει και επιβεβαιώστε ότι το μήνυμα επιστρέφει στην ουρά. Ελέγξτε το maximal_queue_lifetime πριν αποφασίσετε πόσο μπορεί να διαρκέσει μια διακοπή, γιατί μηδενική τιμή σημαίνει μία προσπάθεια και όχι απεριόριστη διατήρηση.
Παρακολουθήστε την ηλικία της ουράς και τη χρήση δίσκου. Μια πολιτική που περιμένει το VPN γίνεται διακοπή mail αν κανείς δεν προσέξει ότι η ουρά μεγαλώνει από την Παρασκευή.
Καταγράψτε μαζί το relay, τη μεταφορά, τον κανόνα του firewall και τη διάρκεια ζωής. Αυτά τα τέσσερα περιγράφουν τη διάταξη· οποιοδήποτε από αυτά μόνο του περιγράφει μια εικασία.