Email και push ειδοποιήσεις

Το Antimatter στέλνει email για προσκλήσεις, επαναφορά κωδικών, επαλήθευση και μη αναγνωσμένα μηνύματα, καθώς και push ειδοποιήσεις στην κινητή εφαρμογή μέσω push proxy. Κανένα από αυτά δεν λειτουργεί μέχρι να το διαμορφώσετε.

Εξερχόμενα email (SMTP)

Το Antimatter στέλνει email μέσω ενός διακομιστή SMTP που παρέχετε εσείς: του διακομιστή αλληλογραφίας του οργανισμού σας ή μιας υπηρεσίας transactional email. Χωρίς αυτό, οι χρήστες δεν μπορούν να επαναφέρουν έναν ξεχασμένο κωδικό, τα email προσκλήσεων και επαλήθευσης δεν φτάνουν και κανείς δεν λαμβάνει email ειδοποιήσεις για μη αναγνωσμένα μηνύματα.

Διαμορφώστε το στη Κονσόλα συστήματος › Περιβάλλον › SMTP, ή με μεταβλητές:

ΡύθμισηΚλειδί και μεταβλητήΠροεπιλογή
Διακομιστής SMTPEmailSettings.SMTPServer, AM_EMAILSETTINGS_SMTPSERVERlocalhost
Θύρα διακομιστή SMTPEmailSettings.SMTPPort, AM_EMAILSETTINGS_SMTPPORT10025
Ενεργοποίηση ελέγχου ταυτότητας SMTPEmailSettings.EnableSMTPAuth, AM_EMAILSETTINGS_ENABLESMTPAUTHανενεργό χωρίς ασφάλεια σύνδεσης, ενεργό με αυτή
Όνομα χρήστη διακομιστή SMTPEmailSettings.SMTPUsername, AM_EMAILSETTINGS_SMTPUSERNAMEκενό
Κωδικός πρόσβασης διακομιστή SMTPEmailSettings.SMTPPassword, AM_EMAILSETTINGS_SMTPPASSWORDκενό
Ασφάλεια σύνδεσηςEmailSettings.ConnectionSecurity, AM_EMAILSETTINGS_CONNECTIONSECURITYΚανένα (κενό); ή TLS ή STARTTLS
Παράλειψη επαλήθευσης πιστοποιητικού διακομιστήEmailSettings.SkipServerCertificateVerificationανενεργό. Αφήστε το ανενεργό σε παραγωγή.

Χρησιμοποιήστε STARTTLS στη θύρα 587 ή TLS στη θύρα 465, όπως λέει ο πάροχός σας. Στη συνέχεια, πατήστε Δοκιμή σύνδεσης στη mesma σελίδα: το Antimatter στέλνει ένα δοκιμαστικό email στη δική σας διεύθυνση.

Μια τυπική διαμόρφωση με Docker Compose, στο compose.override.yaml δίπλα στο compose.yaml:

services:
  antimatter:
    environment:
      AM_EMAILSETTINGS_SMTPSERVER: smtp.example.com
      AM_EMAILSETTINGS_SMTPPORT: "587"
      AM_EMAILSETTINGS_CONNECTIONSECURITY: STARTTLS
      AM_EMAILSETTINGS_ENABLESMTPAUTH: "true"
      AM_EMAILSETTINGS_SMTPUSERNAME: chat@example.com
      AM_EMAILSETTINGS_SMTPPASSWORD: ${SMTP_PASSWORD}
      AM_EMAILSETTINGS_FEEDBACKNAME: Antimatter
      AM_EMAILSETTINGS_FEEDBACKEMAIL: chat@example.com
      AM_EMAILSETTINGS_REPLYTOADDRESS: chat@example.com

Βάλτε το SMTP_PASSWORD στο .env. Το αρχείο compose του ιστοτόπου τοποθετεί τον διακομιστή στο προεπιλεγμένο δίκτυο, το οποίο έχει πρόσβαση στο Internet, οπότε μπορεί να φτάσει σε έναν εξωτερικό διακομιστή SMTP.

Ρυθμίσεις αποστολέα και email ειδοποιήσεων

Στη Κονσόλα συστήματος › Διαμόρφωση Ιστοτόπου › Ειδοποιήσεις:

ΡύθμισηΚλειδίΠροεπιλογή
Ενεργοποίηση email ειδοποιήσεωνEmailSettings.SendEmailNotificationsενεργοποιημένο
Εμφανιζόμενο όνομα ειδοποιήσεωνEmailSettings.FeedbackNameκενό
Διεύθυνση αποστολέα ειδοποιήσεωνEmailSettings.FeedbackEmailtest@example.com: αλλάξτε το
Διεύθυνση απάντησης ειδοποιήσεωνEmailSettings.ReplyToAddresstest@example.com: αλλάξτε το
Διεύθυνση ηλεκτρονικού ταχυδρομείου υποστήριξηςSupportSettings.SupportEmailκενό
Διεύθυνση αποστολής στο κάτω μέρος ειδοποιήσεωνEmailSettings.FeedbackOrganizationκενό
Περιεχόμενο email ειδοποιήσεωνEmailSettings.EmailNotificationContentsTypeΑποστολή πλήρους περιεχομένου μηνύματος (full), ή γενικής περιγραφής μόνο με το όνομα του αποστολέα (generic)
Ενεργοποίηση ομαδοποίησης emailEmailSettings.EnableEmailBatchingανενεργό. Αν ενεργοποιηθεί, οι χρήστες μπορούν να επιλέξουν να λαμβάνουν τα μη αναγνωσμένα μηνύματα ομαδοποιημένα σε ένα email κάθε 15 λεπτά ή κάθε ώρα, αντί για ένα email το καθένα.
Χρήση ονόματος καναλιού στις ειδοποιήσεις ηλεκτρονικού ταχυδρομείουEmailSettings.UseChannelInEmailNotificationsαπενεργοποιημένη
Ενεργοποίηση μπάρας Προβολής (Preview Mode)EmailSettings.EnablePreviewModeBannerενεργό: ενώ οι email ειδοποιήσεις είναι ανενεργές, μια μπάρα ενημερώνει τους διαχειριστές ότι τα email δεν έχουν διαμορφωθεί

Η διεύθυνση «Από» πρέπει να είναι μία ως προς την οποία ο διακομιστής SMTP επιτρέπεται να στέλνει. Ρυθμίστε SPF και DKIM για το τομέα του, διαφορετικά τα μηνύματα μπορεί να καταλήξουν σε φακέλους ανεπιθύμητης αλληλογραφίας.

Οι ρυθμίσεις σύνδεσης που αφορούν τα ηλεκτρονικά μηνύματα (π.χ. αν τα νέα λογαριασmata πρέπει να επαληθεύουν τη διεύθυνσή τους, αν μπορούν να στέλνονται προσκλήσεις μέσω email) βρίσκονται στη σελίδα Σύνδεση και λογαριασμοί.

Ειδοποιήσεις push στην κινητή εφαρμογή

Πώς λειτουργούν οι push ειδοποιήσεις

Το Antimatter δεν επικοινωνεί ποτέ απευθείας με την Apple ή την Google. Για κάθε ειδοποίηση, καλεί έναν push proxy, ο οποίος κατέχει τα διαπιστευτήρια της κινητής εφαρμογής και προωθεί την ειδοποίηση στην Apple (APNs) για iPhone και στην Google (Firebase Cloud Messaging) για συσκευές Android. Η Apple και η Google παραδίδουν ειδοποίηση μόνο όταν στέλνεται με τα διαπιστευτήρια της εφαρμογής για την οποία προορίζεται. Έτσι, ένας push proxy λειτουργεί με μία έκδοση της κινητής εφαρμογής: αυτή των διαπιστευτηρίων που κατέχει.

  • Το Antimatter δεν εκτελεί δημόσιο push proxy. Εκτελείτε εσείς τον push proxy του Antimatter, χρησιμοποιώντας τα διαπιστευτήρια της έκδοσης της κινητής εφαρμογής που εγκαθιστούν οι χρήστες σας.
  • Το Antimatter δεν στέλνει ποτέ ειδοποιήσεις στις υπηρεσίες push του Mattermost, ούτε σε δοκιμαστικές ούτε σε φιλοξενούμενες: αυτές παραδίδουν ειδοποιήσεις μόνο στις δικές τους κινητές εφαρμογές. Αν ο διακομιστής ρυθμιστεί σε μία από τις διευθύνσεις τους (όπως η https://push-test.mattermost.com, που χρησιμοποιούν παλαιότερες ρυθμίσεις Mattermost), δεν στέλνει τίποτα και καταγράφει προειδοποίηση κατά την εκκίνηση.

Ένας νέος διακομιστής δεν έχει διακομιστή push ειδοποιήσεων, οπότε δεν στέλνει push ειδοποιήσεις μέχρι να ορίσετε τη διεύθυνση του push proxy σας. Μέχρι τότε, η κινητή εφαρμογή λειτουργεί, αλλά δεν λαμβάνει ειδοποιήσεις.

Εκτέλεση του push proxy

Ο push proxy βρίσκεται στο αποθετήριο push-proxy. Το README εξηγεί πώς να αποκτήσετε τα δύο διαπιστευτήρια, τα οποία προέρχονται από τους λογαριασμούς που δημοσιεύουν την έκδοση της κινητής εφαρμογής σας:

  • Android: ένα αρχείο λογαριασμού υπηρεσίας (service account) του έργου Firebase που χρησιμοποιεί η έκδοση Android.
  • iOS: ένα κλειδί πιστοποίησης APNs (AuthKey_<KEY ID>.p8) του λογαριασμού προγραμματιστή Apple που δημοσιεύει την έκδοση iOS, μαζί με το ID κλειδιού και το ID ομάδας.

Τοποθετήστε τα δίπλα στο compose.yaml, μαζί με το αρχείο ρυθμίσεων του proxy:

push-proxy/
  config/antimatter-push-proxy.json
  certs/AuthKey_ABCDE12345.p8
  certs/firebase-service-account.json

push-proxy/config/antimatter-push-proxy.json, με το bundle identifier, το ID κλειδιού και το ID ομάδας:

{
    "ListenAddress": ":8066",
    "ThrottlePerSec": 300,
    "ThrottleMemoryStoreSize": 50000,
    "ThrottleVaryByHeader": "X-Forwarded-For",
    "EnableMetrics": false,
    "SendTimeoutSec": 30,
    "RetryTimeoutSec": 8,
    "ApplePushSettings": [
        {
            "Type": "apple_rn",
            "ApplePushUseDevelopment": false,
            "ApplePushTopic": "chat.antimatter.app",
            "AppleAuthKeyFile": "./certs/AuthKey_ABCDE12345.p8",
            "AppleAuthKeyID": "ABCDE12345",
            "AppleTeamID": "FGHIJ67890"
        }
    ],
    "AndroidPushSettings": [
        {
            "Type": "android_rn",
            "ServiceFileLocation": "./certs/firebase-service-account.json"
        }
    ],
    "EnableConsoleLog": true,
    "EnableFileLog": false,
    "LogFormat": "plain",
    "LogLevel": "info"
}

Το ApplePushTopic είναι το iOS bundle identifier της έκδοσής σας. Το ApplePushUseDevelopment είναι true μόνο για εκδόσεις που εγκαθίστανται από το Xcode. Οι κλήσεις ηχείουν σε iPhone μέσω push ειδοποιήσεων VoIP, οι οποίες χρησιμοποιούν το ίδιο κλειδί και δεν απαιτούν κάτι άλλο εδώ.

Η τοποθεσία περιλαμβάνει έτοιμη προσθήκη στο αρχείο σύνθεσης, compose.push.example.yaml. Εκτελεί τη δημοσιευμένη εικόνα, ghcr.io/antimatterchat/push-proxy:latest.

curl -fsSLO https://antimatter.chat/compose.push.example.yaml
docker compose -f compose.yaml -f compose.push.example.yaml --profile push up -d
docker compose -f compose.yaml -f compose.push.example.yaml logs push-proxy

Κατά την εκκίνηση, το αρχείο καταγραφής της proxy αναφέρει κάθε στόχο push που έχει ρυθμίσει και καταγράφει σφάλμα για όσους δεν μπορούν να φορτωθούν τα διαπιστευτήριά τους. Η proxy δεν εκθέτει καμία θύρα: μόνο το Antimatter επικοινωνεί μαζί της, μέσω του δικτύου σύνθεσης.

Χωρίς Docker, εγκαταστήστε αντίστοιχα το πακέτο .deb ή .rpm του push proxy: δείτε Τα πακέτα της υπηρεσίας GIF και του push proxy.

Η proxy push δεν ελέγχει ποιος την καλεί. Μην την εκθέτετε στο Διαδίκτυο. Αν εκτελείται σε έναν άλλο διακομιστή, τοποθετήστε την πίσω από HTTPS και περιορίστε ποιοι μπορούν να την προσεγγίσουν: οι ειδοποιήσεις μπορεί να περιέχουν το κείμενο των μηνυμάτων.

Καθορίστε το Antimatter προς την proxy

Στην Κονσόλα συστήματος › Περιβάλλον › Διακομιστής push ειδοποιήσεων, ορίστε το Ενεργοποίηση push ειδοποιήσεων σε Αποστολή ειδοποιήσεων push μέσω δικής σας push proxy και το Διακομιστής push ειδοποιήσεων σε http://push-proxy:8066 (ή τη διεύθυνση HTTPS της proxy, αν εκτελείται αλλού). Η σελίδα δεν μπορεί να αποθηκευτεί με αυτή την επιλογή και χωρίς διεύθυνση. Για να σταματήσετε την αποστολή push ειδοποιήσεων, επιλέξτε Να μην στέλνονται push ειδοποιήσεις. Εναλλακτικά, με μεταβλητές στην υπηρεσία antimatter:

AM_EMAILSETTINGS_SENDPUSHNOTIFICATIONS: "true"
AM_EMAILSETTINGS_PUSHNOTIFICATIONSERVER: http://push-proxy:8066

Για έλεγχο: συνδεθείτε με την κινητή εφαρμογή, βάλτε την σε segundo plano και ζητήστε από έναν άλλο λογαριασμό να σας αναφέρει. Αν δεν φτάσει τίποτα, αναζητήστε το push στο αρχείο καταγραφής του Antimatter και στο αρχείο καταγραφής της proxy: θα σας πουν αν ο τύπος συσκευής είναι άγνωστος, αν απορρίφθηκε ένα κλειδί ή αν η συσκευή ανήκει σε άλλη έκδοση της εφαρμογής.

Τι περιέχουν οι ειδοποιήσεις

Κονσόλα συστήματος › Διαμόρφωση Ιστοτόπου › Ειδοποιήσεις › Περιεχόμενο push ειδοποιήσεων (EmailSettings.PushNotificationContents):

ΕπιλογήΤιμή
Γενική περιγραφή μόνο με το όνομα του αποστολέαgeneric_no_channel
Γενική περιγραφή με το όνομα του αποστολέα και του καναλιούgeneric
Πλήρες περιεχόμενο μηνύματος που αποστέλλεται στο φορτίο της ειδοποίησης (προεπιλογή)full
Πλήρες περιεχόμενο μηνύματος που λαμβάνεται από τον διακομιστή κατά την παραλαβήid_loaded

Με id_loaded, η ειδοποίηση που περνάει από την proxy, την Apple και την Google περιέχει μόνο ένα id, και η εφαρμογή λαμβάνει το μήνυμα από τον δικό σας διακομιστή: το κείμενο του μηνύματος δεν περνά ποτέ από τις υπηρεσίες τους. Είναι η καλύτερη επιλογή όταν τα μηνύματα είναι εμπιστευτικά.

Το Όριο ειδοποιήσεων μεγάλου καναλιού, στη σελίδα Διακομιστή push ειδοποιήσεων, (TeamSettings.MaxNotificationsPerChannel, 1000 ως προεπιλογή) είναι ο μέγιστος αριθμός μελών που μπορεί να έχει ένα κανάλι για να λειτουργούν οι αναφορές @here, @all και @channel. Σε μεγαλύτερα κανάλια, αυτές οι αναφορές και οι δείκτες πληκτρολόγησης απενεργοποιούνται.