postfix + dovecot + mysql unter FreeBSD

Einleitung


Ich wollte den Mailserver lange studieren, aber meine Hände waren erst jetzt erreicht, und ich konnte nicht viele richtige Informationen finden. Deshalb habe ich beschlossen, eine möglichst ausführliche Veröffentlichung zu verfassen. In dieser Publikation werden nicht nur Postfix, Dovecot, MySQL, PostfixAdmin, sondern auch Spamassassin, Clamav-Milter (eine spezielle Version von Clamav für Mail-Server), Postgrey sowie die Möglichkeit der Übertragung von Spam in den Spam-Ordner (Dovecot- Taube).

Vorbereitung


Zunächst installieren wir die Pakete, die Sie für die Arbeit benötigen (Postfix, Dovecot und Dovecot-Pigeonhole müssen von den Ports aus installiert werden. Dovecot-Sieve kann von Paketen aus installiert werden. Im Prinzip gibt es neuere Versionen in den Ports. Aus diesem Grund kann es zu Inkompatibilitäten zwischen Dovecot und Dovecot kommen. Sieb). Installieren Sie die folgenden Pakete:

pkg install apache24 php73 mod_php73 php73-extensions php73-mysqli php73-mbstring php73-openssl clamav-milter postgrey spamassassin mysql57-server openssl wget 

Nach der Installation werden wir die notwendigen Dienste in den Autostart versetzen:

 #postfix  dovecot  ,       sysrc postfix_enable="YES" sysrc dovecot_enable="YES" sysrc mysql_enable="YES" sysrc apache24_enable="YES" sysrc spamd_flags="-u spamd -H /var/spool/spamd" sysrc spamd_enable="YES" sysrc postgrey_enable="YES" sysrc clamav_clamd_enable="YES" sysrc clamav_milter_enable="YES" sysrc clamav_freshclam_enable="YES" #freshclam        12  sysrc clamav_freshclam_flags="--daemon --checks=12" 

Führen Sie die Dienste aus:

 service apache24 start service mysql-server start #  spamassassin       sa-update sa-compile service sa-spamd start #   clamav   freshclam service clamav-clamd start service clamav-freshclam start service clamav-milter start #  postgrey    (/usr/local/etc/rc.d/postgrey),       ""   4-   ,    : ${postgrey_flags:=--inet=10023}     : : ${postgrey_flags:=--inet=10023 --auto-whitelist-clients=4} service postgrey start 

Vergessen Sie nicht, die Zeilen hinzuzufügen, die erforderlich sind, damit PHP in Apache und PostfixAdmin ordnungsgemäß in httpd.conf funktioniert:

 <FilesMatch "\.php$"> SetHandler application/x-httpd-php </FilesMatch> <FilesMatch "\.phps$"> SetHandler application/x-httpd-php-source </FilesMatch> <IfModule dir_module> DirectoryIndex index.php </IfModule> #         postfixadmin DocumentRoot "/usr/local/www/apache24/data/postfixadmin-3.2/public" 

Wechseln Sie als Nächstes in das Verzeichnis und laden Sie postfixadmin herunter

 cd /usr/local/www/apache24/data 

Postfixadmin herunterladen (zum Zeitpunkt des Schreibens war die aktuelle Version 3.2)

 wget --no-check-certificate https://sourceforge.net/projects/postfixadmin/files/postfixadmin/postfixadmin-3.2/postfixadmin-3.2.tar.gz 

Danach müssen Sie das Archiv in dieses Verzeichnis entpacken und den Eigentümer des Verzeichnisses ändern:

 gzip -d postfixadmin-3.2.tar.gz tar -xvf postfixadmin-3.2.tar chown -R www:www /usr/local/www/apache24/data service apache24 restart 

Bereiten Sie als Nächstes die Datenbank für postfixadmin vor, führen Sie das mysql-secure-installation-Skript aus (das Kennwort, das Sie in diesem Skript erstellen, muss mit dem Befehl alter user in mysql erstellt werden), und geben Sie mysql ein, erstellen Sie die Datenbank und die Rechte für Sie:

 mysql -p -r alter user 'root'@'localhost' identified by 'password123'; create database postfix; grant all privileges on postfix.* to 'postfix'@'localhost' identified by 'password123'; exit 

Nachdem die Datenbank konfiguriert wurde, müssen Sie die Datei config.inc.php bearbeiten. In diesem Beispiel befindet sich diese Datei im Verzeichnis /usr/local/www/apache24/data/postfixadmin-3.2/. In dieser Datei müssen Sie mehrere Zeilen bearbeiten und an bringen Denken Sie daran, dass Sie nach dem Ändern der Einstellungen den Apache neu starten müssen. Sie müssen auch das Verzeichnis templates_c im Verzeichnis /usr/local/www/apache24/data/postfixadmin-3.2 erstellen und ihm den Eigentümer www zuweisen:

 mkdir /usr/local/www/apache24/data/postfixadmin-3.2/templates_c chown -R www:www /usr/local/www/apache24/data/postfixadmin-3.2/templates_c $CONF['configured'] = true #       postfixadmin     . $CONF['setup_password'] = 'dd28fb2139a3bca426f02f60e6877fd5:13d2703c477b0ab85858e3ac5e076a0a7a477315'; $CONF['default_language'] = 'ru' $CONF['database_type'] = 'mysqli'; $CONF['database_host'] = 'localhost'; $CONF['database_user'] = 'postfix'; #           $CONF['database_password'] = 'password123'; $CONF['database_name'] = 'postfix'; service apache24 restart 

SSL


Um den Schlüssel zu generieren, verwenden wir die auf der postfix.org-Website angebotene Methode. Nach dem Erstellen unserer eigenen Zertifizierungsstelle müssen wir das Verzeichnis / etc / ssl aufrufen und das Skript ausführen:

 cd /etc/ssl /usr/local/openssl/misc/CA.pl -newca 

Während der Ausführung des Skripts wird ein Name für das Zertifikat angefordert. Geben Sie nichts ein. Drücken Sie die Eingabetaste. Anschließend werden Sie aufgefordert, ein Kennwort für das Zertifikat zu erstellen. Anschließend werden Standardfragen zum Erstellen eines Zertifikats angezeigt.

Als Nächstes müssen Sie einen geheimen Schlüssel (ohne Kennwort) erstellen und ein nicht signiertes öffentliches Schlüsselzertifikat (Name der Organisationseinheit (z. B. Abschnitt) [] sollte sich von den Angaben im oben erstellten Zertifikat unterscheiden):

 openssl req -new -newkey rsa:4096 -nodes -keyout foo-key.pem -out foo-req.pem 

Wir unterschreiben das Public-Key-Zertifikat (geben Sie die Anzahl der Tage an, die Sie benötigen):

 openssl ca -out foo-cert.pem -days 365 -infiles foo-req.pem 

Belassen Sie die erstellten Zertifikate in diesem Verzeichnis oder übertragen Sie sie in das für Sie bequemere Verzeichnis. Der Postfix „configs“ und der Taubenschlag werden unter Berücksichtigung der Tatsache konfiguriert, dass sich die Zertifikate in diesem Verzeichnis befinden.

Vmail-Benutzer


Vor der Installation von Postfix, Dovecot und Dovecot-Pigeonhole erstellen wir einen Benutzer und eine Gruppe (eine Gruppe wird automatisch erstellt) vmail sowie ein Verzeichnis, in dem sich die E-Mails befinden.

 pw useradd -n vmail -s /usr/sbin/nologin -u 1000 -d /var/vmail 

Erstellen Sie ein Verzeichnis für E-Mails und legen Sie den Eigentümer des vmail-Benutzers fest:

 mkdir /var/vmail chown -R vmail:vmail /var/vmail chmod -R 744 /var/vmail 

Postfix, Taubenschlag, Taubenschlagloch


Wie ich bereits geschrieben habe, werden wir die Anwendungsdaten aus den Ports zusammenstellen, den Befehl ausführen, um die Ports herunterzuladen und zu entpacken:

 portsnap fetch extract 

Wechseln Sie nach dem Entpacken der Ports in das Verzeichnis dovecot, konfigurieren Sie den Port (beachten Sie die Unterstützung für MySQL) und führen Sie den Build aus (BATCH = yes teilt make mit, während der Installation keine Fragen zu stellen):

 cd /usr/ports/mail/dovecot make config make BATCH=yes install clean 

Machen Sie dasselbe mit Postfix und Taubenschlag

Taubenschlag-Taubenloch:

 cd /usr/ports/mail/dovecot-pigeonhole make BATCH=yes install clean 

postfix: überprüfe auch die mysql unterstützung in den port einstellungen

 cd /usr/ports/mail/postfix-sasl make config make BATCH=yes install clean 

Kopieren Sie vor dem Start von dovecot die "configs":

  cp -R /usr/local/etc/dovecot/example-config/* /usr/local/etc/dovecot 

Starten Sie nach der Installation von Postfix und Dovecot die Dienste:

 service postfix start service dovecot start 

Außerdem muss ein Verzeichnis erstellt werden, in dem das Modul zum Senden von Spam an den Spam-Ordner kompiliert wird. In meinem Fall befindet sich dieses Verzeichnis im Ordner /usr/local/etc/dovecot/conf.d. Der Verzeichnisname lautet def. Erstellen Sie dieses Verzeichnis und eine Datei mit Code zum Kompilieren und legen Sie den Besitzer des angegebenen vmail-Benutzerverzeichnisses fest:

 mkdir /usr/local/etc/dovecot/conf.d/def touch /usr/local/etc/dovecot/conf.d/def/default.sieve chown -R vmail:vmail /usr/local/etc/dovecot/conf.d/def chmod -R 744 /usr/local/etc/dovecot/conf.d/def 

Platzieren Sie die Zeilen in dieser Datei:

 require "fileinto"; if header :contains "X-Spam-Flag" "YES" { fileinto "Junk"; } 

Configs


In diesem Abschnitt gebe ich Beispiele für "Configs" mit Kommentaren an. Ich bezweifle nur die "Config" von Spamassassin, da ich im Netzwerk nicht die richtigen Beschreibungen gefunden habe (ich habe die "Config" standardmäßig verlassen). Bitte fügen Sie in den Kommentaren hinzu, wie Spamassassin am besten konfiguriert werden kann.

Postfix


Zunächst müssen Sie Dateien erstellen, um Benutzer, Domänen und Kontingente aus der Datenbank abzurufen. Erstellen Sie ein Verzeichnis zum Speichern der Datendateien und der erforderlichen Dateien:

 mkdir /usr/local/etc/postfix/mysql touch /usr/local/etc/postfix/mysql/relay_domains.cf touch /usr/local/etc/postfix/mysql/virtual_alias_maps.cf touch /usr/local/etc/postfix/mysql/virtual_alias_domain_maps.cf touch /usr/local/etc/postfix/mysql/virtual_mailbox_maps.cf 

Der Inhalt dieser Dateien ist:
relay_domains.cf

 hosts = 127.0.0.1 user = postfix password = password123 dbname = postfix query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '1' 

virtual_alias_maps.cf

 hosts = 127.0.0.1 user = postfix password = password123 dbname = postfix query = SELECT goto FROM alias WHERE address='%s' AND active ='1' 

virtual_alias_domain_maps.cf

 hosts = 127.0.0.1 user = postfix password = password123 dbname = postfix query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = '1' 

virtual_mailbox_maps.cf

 hosts = 127.0.0.1 user = postfix password = password123 dbname = postfix query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1' 

master.cf

 # postfix  ,    dovecot    dovecot unix - nn - - pipe flags=DRhu user=vmail:vmail argv=/usr/local/libexec/dovecot/deliver -f ${sender} -d ${recipient} #  smtpd     sasl,    ,  spamassassin    smtp inet n - n - - smtpd -o content_filter=spamassassin -o smtpd_sasl_auth_enable=yes #  587     sasl submission inet n - n - - smtpd -o smtpd_sasl_auth_enable=yes #  smtp    SASL smtps inet n - n - - smtpd -o smtpd_sasl_auth_enable=yes -o smtpd_tls_wrappermode=yes # Spamassassin spamassassin unix - nn - - pipe flags=DROhu user=vmail:vmail argv=/usr/local/bin/spamc -f -e /usr/local/libexec/dovecot/deliver -f ${sender} -d ${user}@${nexthop} #628 inet n - n - - qmqpd pickup unix n - n 60 1 pickup cleanup unix n - n - 0 cleanup qmgr unix n - n 300 1 qmgr #qmgr unix n - n 300 1 oqmgr tlsmgr unix - - n 1000? 1 tlsmgr rewrite unix - - n - - trivial-rewrite bounce unix - - n - 0 bounce defer unix - - n - 0 bounce trace unix - - n - 0 bounce verify unix - - n - 1 verify flush unix n - n 1000? 0 flush proxymap unix - - n - - proxymap proxywrite unix - - n - 1 proxymap smtp unix - - n - - smtp relay unix - - n - - smtp -o syslog_name=postfix/$service_name # -o smtp_helo_timeout=5 -o smtp_connect_timeout=5 showq unix n - n - - showq error unix - - n - - error retry unix - - n - - error discard unix - - n - - discard local unix - nn - - local virtual unix - nn - - virtual lmtp unix - - n - - lmtp anvil unix - - n - 1 anvil scache unix - - n - 1 scache postlog unix-dgram n - n - 1 postlogd 

main.cf

 #       dovecot,       local_transport = dovecot #      ,  SMTP-      EHLO  SMTP  smtpd_discard_ehlo_keywords = CONNECT GET POST #            smtpd_delay_reject = yes #     smtpd_helo_required = yes #     ,   disable_vrfy_command = yes #       broken_sasl_auth_clients = yes #   smtpd_sasl_security_options = noanonymous noactive nodictionary smtp_sasl_security_options = noanonymous noactive nodictionary # dovecot  (  cyrus) smtpd_sasl_type = dovecot smtp_sasl_type = dovecot #    smtpd_sasl_path = private/auth #   local_recipient_maps = $virtual_mailbox_maps $virtual_alias_maps #   ,    smtpd_reject_unlisted_recipient = yes #   message_size_limit = 10485760 #     spamassassin spamassassin_destination_recipient_limit = 1 # milter_default_action = accept milter_protocol = 2 #   clamav smtpd_milters = unix:/var/run/clamav/clmilter.sock non_smtpd_milters = unix:/var/run/clamav/clmilter.sock #MYSQL relay_domains = mysql:/usr/local/etc/postfix/mysql/relay_domains.cf virtual_alias_maps = mysql:/usr/local/etc/postfix/mysql/virtual_alias_maps.cf, mysql:/usr/local/etc/postfix/mysql/virtual_alias_domain_maps.cf virtual_mailbox_maps = mysql:/usr/local/etc/postfix/mysql/virtual_mailbox_maps.cf # HELO smtpd_helo_restrictions = permit_sasl_authenticated, reject_non_fqdn_helo_hostname, reject_invalid_hostname #    smtpd_data_restrictions = permit_sasl_authenticated reject_unauth_pipelining, reject_multi_recipient_bounce #   smtpd_sender_restrictions = permit_sasl_authenticated reject_sender_login_mismatch,reject_unauthenticated_sender_login_mismatch, reject_non_fqdn_sender, reject_unknown_sender_domain #  (check_policy_service inet:127.0.0.1:10023  postgrey -      ) smtpd_recipient_restrictions = permit_sasl_authenticated reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_multi_recipient_bounce, reject_unknown_client_hostname, reject_unauth_destination, check_policy_service inet:127.0.0.1:10023 #   virtual_mailbox_base = /var/vmail #uid  gid vmail virtual_minimum_uid = 1000 virtual_uid_maps = static:1000 virtual_gid_maps = static:1000 #   virtual_transport = devecot dovecot_destination_recipient_limit = 1 #  smtp_use_tls=yes smtp_tls_note_starttls_offer=yes # smtp_tls_security_level=encrypt       ssl,        ssl,    smtp_tls_security_level=may(    ssl,     ) smtp_tls_security_level=encrypt smtp_tls_session_cache_database=btree:$data_directory/smtp_tls_session_cache smtp_tls_CAfile=/etc/ssl/demoCA/cacert.pem smtp_tls_key_file=/etc/ssl/foo-key.pem smtp_tls_cert_file=/etc/ssl/foo-cert.pem smtp_tls_session_cache_timeout=3600s smtp_tls_protocols=!TLSv1.2 smtp_tls_loglevel=1 # smtpd_tls_security_level=encrypt       ssl,        ssl,    smtpd_tls_security_level=may(    ssl,     ) smtpd_tls_security_level=encrypt smtpd_use_tls=yes smtpd_tls_auth_only=yes smtpd_tls_loglevel=1 smtpd_tls_received_header=yes smtpd_tls_session_cache_timeout=3600s smtpd_tls_session_cache_database=btree:$data_directory/smtpd_tls_session_cache smtpd_tls_key_file=/etc/ssl/foo-key.pem smtpd_tls_cert_file=/etc/ssl/foo-cert.pem smtpd_tls_CAfile= /etc/ssl/demoCA/cacert.pem smtpd_tls_protocols=!TLSv1.2 #      tls_random_source=dev:/dev/urandom #  compatibility_level = 2 #   ,    ,      ,    soft_bounce = no #   UNIX       postfix mail_owner = postfix #     postfix(        ) myhostname = $mydomain #       mydomain = virusslayer.su myorigin = $myhostname #    inet_interfaces = all #        mydestination = $mydomain, localhost, localhost.$mydomain #   550         unknown_local_recipient_reject_code = 550 #    localhost mynetworks_style = host #       , -         mynetworks = #  ip inet_protocols = ipv4 #  (   ) alias_maps = hash:/etc/mail/aliases alias_database = dbm:/etc/mail/aliases.db #          smtpd_banner = $myhostname ESMTP $mail_name #       debug_peer_level = 2 #      (   ,    yandex.ru gmail.ru mail.ru  ..) debug_peer_list = 127.0.0.1 #   debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5 #  sendmail sendmail_path = /usr/local/sbin/sendmail mailq_path = /usr/local/bin/mailq setgid_group = maildrop #    html_directory = /usr/local/share/doc/postfix manpage_directory = /usr/local/man sample_directory = /usr/local/etc/postfix readme_directory = /usr/local/share/doc/postfix meta_directory = /usr/local/libexec/postfix shlib_directory = /usr/local/lib/postfix queue_directory = /var/spool/postfix command_directory = /usr/local/sbin daemon_directory = /usr/local/libexec/postfix data_directory = /var/db/postfix 

Docot


dovecot.conf

 #     dovecot protocols = imap pop3 #    listen = *, :: #        mysql dict { quota = mysql:/usr/local/etc/dovecot/dovecot-dict-sql.conf.ext } #   !include conf.d/*.conf !include_try local.conf 

dovecot-dict-sql.conf.ext

 connect = host=127.0.0.1 dbname=postfix user=postfix password=password123 map { pattern = priv/quota/storage table = quota2 username_field = username value_field = bytes } map { pattern = priv/quota/messages table = quota2 username_field = username value_field = messages } 

dovecot-sql.conf.ext

 #    MYSQL driver = mysql connect = host=127.0.0.1 dbname=postfix user=postfix password=password123 #     default_pass_scheme = MD5 #  ,    user_query = SELECT '/var/mail/%d/%n/' AS home, 'maildir:/var/vmail/%d/%n' AS mail, 1000 AS uid, 1000 AS gid, concat('*:bytes=',quota) as quota_rule FROM mailbox \ WHERE username ='%u' AND active = '1' password_query = SELECT username as user, password, '/var/vmail/%d/%n' as userdb_home, 'maildir:/var/vmail/%d/%n' as userdb_mail, 1000 as userdb_uid, \ 1000 as userdb_gid, concat('*:bytes=',quota) AS userdb_quota_rule FROM mailbox WHERE username ='%u' AND active ='1' 

10-auth.conf

 #   SSL disable_plaintext_auth = yes #   auth_realms = virusslayer.su auth_default_realm = virusslayer.su #    ( ,         ssl) auth_mechanisms = plain login #   ,  !include auth-sql.conf.ext,        mysql #!include auth-deny.conf.ext #!include auth-master.conf.ext #!include auth-system.conf.ext !include auth-sql.conf.ext #!include auth-ldap.conf.ext #!include auth-passwdfile.conf.ext #!include auth-checkpassword.conf.ext #!include auth-vpopmail.conf.ext #!include auth-static.conf.ext 

10-mail.conf

 #    mail_location = maildir:/var/vmail/%d/%n #       namespace inbox { inbox = yes } #uid  gid vmail mail_uid = 1000 mail_gid = 1000 # ,    quota mail_plugins = quota 

10-master.conf

 #     ssl service imap-login { inet_listener imap { port = 143 } inet_listener imaps { port = 993 ssl = yes } } service pop3-login { inet_listener pop3 { port = 110 } inet_listener pop3s { port = 995 ssl = yes } } service submission-login { inet_listener submission { port = 587 } } #           (   ,       ) service auth { unix_listener auth-userdb { mode = 0600 user = vmail group = vmail } # Postfix smtp-auth unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix } } #  vmail   service dict { unix_listener dict { mode = 0660 user = vmail group = vmail } } 

10-ssl.conf

 # ssl  (    sll  ) ssl = required #   ssl_cert = </etc/ssl/foo-cert.pem ssl_key = </etc/ssl/foo-key.pem ssl_ca = </etc/ssl/demoCA/cacert.pem #    ssl_min_protocol = TLSv1.2 

15-lda.conf

 quota_full_tempfail = no lda_mailbox_autosubscribe = yes protocol lda { #      sieve,        mail_plugins = $mail_plugins sieve quota } 

90-plugin.conf

 #             "",       chown -R vmail:vmail #          "" plugin { #setting_name = value sieve = /usr/local/etc/dovecot/conf.d/def/default.sieve } 

auth-sql.conf.ext

 #      MYSQL passdb { driver = sql # Path for SQL configuration file, see example-config/dovecot-sql.conf.ext args = /usr/local/etc/dovecot/dovecot-sql.conf.ext } userdb { driver = sql args = /usr/local/etc/dovecot/dovecot-sql.conf.ext } 

Spamassassin


Der Spamassassin "config" sieht so aus, aber irgendetwas sagt mir, dass die Daten nicht ausreichen. Bitte helfen Sie mit den Daten in der "config":

local.cf

 rewrite_header Subject *****SPAM***** report_safe 0 required_score 5.0 use_bayes 1 bayes_auto_learn 1 ifplugin Mail::SpamAssassin::Plugin::Shortcircuit endif # Mail::SpamAssassin::Plugin::Shortcircuit 

Es ist auch notwendig, Briefe mit und ohne Spam zu trainieren:

 sa-learn --spam /path/spam/folder sa-learn --ham /path/ham/folder 

Optional


In diesem Abschnitt lege ich die Firewall-Einstellungen basierend auf pf fest, füge pf zur automatischen Ausführung hinzu und lege die Datei mit den Regeln fest:

 sysrc pf_enable="YES" sysrc pf_rules="/etc/0.pf" 

Erstellen Sie eine Datei mit den Regeln:

 ee /etc/0.pf 

Und füge die Regeln hinzu:

 # (   lo0)    ,     set skip on lo0 #      deovecot, postfix, root pass in quick proto { tcp, udp } from any to any port {53,25,465,587,110,143,993,995} user {dovecot,postfix,root} flags S/SA modulate state pass out quick proto { tcp, udp } from any to any port {53,25,465,587,110,143,993,995} user {dovecot,postfix,root} #      root pass out quick proto {tcp,udp} from any to any user root #     pass in quick proto tcp from any to any port 80 flags S/SA modulate state #SSH pass in quick proto tcp from any to any port 22 flags S/SA modulate state #     clamav  spamd pass out quick proto {tcp,udp} from any to any user {clamav,spamd} #DNS  ICMP pass out quick proto {tcp,udp} from any to any port=53 keep state pass out quick proto icmp from any to any block from any to any fragment block from any to any block all 

Sie können pf mit dem folgenden Befehl ausführen:

 service pf start 

Testen


Um alle möglichen Verbindungen (STARTTLS, SLL) zu testen, können Sie den MyOffice Mail-Client für mobile Geräte (in meinem Fall für ios) verwenden. In dieser Anwendung gibt es viele Parameter zum Konfigurieren von Verbindungen zum Mailserver.

Um spaassasin zu testen, verwenden wir die GTUBE-Signatur. Fügen Sie die folgende Zeile in die Nachricht ein:

 XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X 

Wenn alles in Ordnung ist, wird die Nachricht mit Spam markiert und entsprechend in den Spam-Ordner verschoben.

Um das Virenschutzprogramm zu testen, müssen Sie eine E-Mail mit einer Textdatei senden. In dieser Datei befindet sich eine EICAR-Sequenz:

 X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H* 

Briefe müssen natürlich von externen Postfächern gesendet werden.
Führen Sie Folgendes aus, um die Protokolle in Echtzeit anzuzeigen:

 tail -f /var/log/maillog 

Zum korrekten Testen des Sendens von E-Mails an externe Postfächer (z. B. yandex.ru, mail.ru, gmail.com usw.) muss außerdem die Reverse-DNS-Zone (PTR-Eintrag) registriert werden. Wenden Sie sich hierzu an Ihren Anbieter (sofern zutreffend) Sie haben sicherlich keinen eigenen DNS-Server).

Fazit


Es mag natürlich so aussehen, als wäre der Mailserver eine ziemlich komplizierte Sache, aber wenn Sie es herausfinden, ist es überhaupt nicht so, dass Sie, nachdem Sie ein wenig Zeit mit der Konfiguration verbracht haben, einen ziemlich funktionierenden Mailserver mit Schutz vor Spam und Viren erhalten können.

PS Wenn Sie vorhaben, Kommentare zu kopieren und einzufügen, müssen Sie den Root-Benutzer (und die Benutzer, die ihn benötigen) zu den russischen Klassenprotokollen hinzufügen:

 pw usermod root -L russian 

Nach diesen Aktionen werden russische Zeichen korrekt angezeigt.

Source: https://habr.com/ru/post/de476148/


All Articles