es ist jetzt zum 2. mal in dieser Woche passiert, das postfix mit dem Port 25 und 10025 nicht mehr aktiv war und demenstpechend auch keine Mails mehr gesendet wurden. Im Log habe ich nichts gefunden, was auf einen Fehler schließen lässt. Nach einem einfachen Neustart des postfix Dienstes läuft alles fehlerfrei.
Ich habe jetzt monit installiert und lasse postfix überwachen und ggf. neu starten.
Dieses Vorgehen mach mir aber verständlicherweise unbehagen.
Ist da irgendwas bekannt?
ging/geht mir genauso. Hatte dann den Port extra eingetragen statt auf die “Defaults” zu setzen. Dann ging es via swaks, aber Kopano sendet/empfängt immer noch nichts.
Hatte ein re-joining mit “force” durchgeführt, auch ohne Ergebnis. Da ich mit meinem Tread keine Antworten mehr erhalte bin ich gespannt wie es hier weiter geht.
bitte im Fehlerfall vor dem Neustart netstat -anvpt und systemctl status -l postfix.service ausführen und die letzten x Zeile des log files /var/log/mail.log anschauen.
Hallo ravi,
Wo wurde welcher Port eingetragen?
Gibt es von Kopano eine Fehlermeldung oder etwas im Logfile?
Taucht in Postfix’ logfile auf, dass Kopano eine Verbindung aufbaut?
Das Problem ist halt, dass es sich um einen produktiven Server handelt und dieser 24/7 erreichbar sein muss. Ich schaue natürlich auch nicht jede Minute drauf, um zu prüfen ob der Dienst noch läuft.
Monit macht das jetzt
ein netstat -anvpt|grep master hatte heute morgen, vor dem Neustart nur dieses ausgegeben
Ich habe gerade vom Kopano Support gehört, dass der Kopano-spooler daran Schuld sein könnte, und es gibt wohl auch schon einen Bugfix dafür. Dieser ist für Kopano direkt bereits verfügbar (aus deren repositorys), für UCS soll er zeitnah ausgerollt werden.
Ich habe dazu gerade mit unserem Support gesprochen. Das Problem auf das sich hier bezogen wird ist https://jira.kopano.io/browse/KC-815. Dies hat aber keinerlei Einfluss darauf ob Postfix läuft oder nicht.
Die unterste Logzeile sagt, dass der Dienst zuletzt gestoppt wurde.
Gleichzeitig aber läuft ein Prozess, der jedoch nur an bestimmte Ports bindet. Dass der Prozess mal an mehr Ports lauschte und diese “verlor” erscheint mir unwahrscheinlich - so funktioniert Postfix einfach nicht.
Kann es sein, dass Postfix noch durch etwas anderes gesteuert wird?
Wie restartet den denn Monit?
Wie ist die PID nach dem Neustart und wonach entscheidet Monit, dass es Postfix restarten soll?
Sind main.cf oder master.cf händisch editiert worden? Gibt es eine main.cf.local?
Bitte mal ucr commit /etc/postfix/* ausführen und main.cf und master.cf hier posten.
Steht etwas interessantes in /var/log/mail.log oder /var/log/syslog?
es gibt keine händischen Veränderungen an den conf Dateien.
Monit ist ja erst “jetzt” im Einsatz, nachdem das Problem aufgetreten ist. Monit überwacht unter anderem die verschiedenen Ports und deren Ausgabe. Zum Beispiel sendet monit an den Port 25 auch ein “ehlo” und prüft die Rückgabe. Sollte diese nicht korrekt sein (oder gar nicht vorhanden), dann (in meinem Fall) versucht er es im Minutentakt noch 2 mal. Sollte immer noch nichts antworten restartet er den Dienst und sendet eine Mail (über einen externen mailserver).
Hier die gewünschten Ausgaben:
ucr commit /etc/postfix/*
# Warning: This file is auto-generated and might be overwritten by
# univention-config-registry.
# Please edit the following file(s) instead:
# Warnung: Diese Datei wurde automatisch generiert und kann durch
# univention-config-registry ueberschrieben werden.
# Bitte bearbeiten Sie an Stelle dessen die folgende(n) Datei(en):
#
# /etc/univention/templates/files/etc/postfix/main.cf.d/10_general
# /etc/univention/templates/files/etc/postfix/main.cf.d/30_maps
# /etc/univention/templates/files/etc/postfix/main.cf.d/40_postscreen
# /etc/univention/templates/files/etc/postfix/main.cf.d/50_restrictions
# /etc/univention/templates/files/etc/postfix/main.cf.d/60_tls
# /etc/univention/templates/files/etc/postfix/main.cf.d/80_delivery
# /etc/univention/templates/files/etc/postfix/main.cf.d/99_local
#
# The message_size_limit parameter limits the total size in bytes of
# a message, including envelope information. Default is 10240000
message_size_limit = 51200000
# mailbox_size_limit limits the max. size of local mailboxes. Default is 51200000
mailbox_size_limit = 0
# some basic path definitions
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix/sbin
# some basic mail system settings
myhostname = [domain]
# mydomain is unset - The default is to use $myhostname minus the first component.
myorigin = [domain]
smtp_helo_name = [domain]
append_dot_mydomain = no
inet_interfaces = all
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost
mynetworks = 127.0.0.0/8
mynetworks_style = subnet
masquerade_domains = $mydomain
masquerade_exceptions = root
transport_maps = hash:/etc/postfix/transport
relay_domains = $mydestination
# we need to name a smtp relay host to which we forward non-local
# mails. smtp authentication is also possible.
relayhost = smtp.1und1.de
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/smtp_auth
disable_vrfy_command = no
# banner
smtputf8_enable = no
local_header_rewrite_clients =
virtual_alias_domains =
virtual_alias_maps = hash:/etc/postfix/virtual,
ldap:/etc/postfix/ldap.groups,
ldap:/etc/postfix/ldap.distlist,
ldap:/etc/postfix/ldap.virtual,
ldap:/etc/postfix/ldap.external_aliases,
ldap:/etc/postfix/ldap.sharedfolderremote,
ldap:/etc/postfix/ldap.sharedfolderlocal_aliases
virtual_mailbox_domains = ldap:/etc/postfix/ldap.virtualdomains
virtual_mailbox_maps = ldap:/etc/postfix/ldap.virtual_mailbox,
ldap:/etc/postfix/ldap.sharedfolderlocal
virtual_transport = lmtp:127.0.0.1:2003
canonical_maps = hash:/etc/postfix/canonical
relocated_maps = hash:/etc/postfix/relocated
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
# postscreen settings
postscreen_dnsbl_action = enforce
postscreen_dnsbl_threshold = 3
postscreen_dnsbl_sites =
postscreen_helo_required = no
postscreen_greet_action = drop
postscreen_greet_ttl = 1d
postscreen_non_smtp_command_enable = no
postscreen_non_smtp_command_action = ignore
postscreen_bare_newline_enable = no
postscreen_bare_newline_action = ignore
postscreen_blacklist_action = ignore
postscreen_access_list = permit_mynetworks
cidr:/etc/postfix/postscreen_access.cidr
# smtpd_sender_restrictions is not defined since all relevant checks have been moved to
# smtpd_recipient_restrictions (see below) and every mail has to pass smtpd_recipient_restrictions too.
#smtpd_sender_restrictions =
smtpd_recipient_restrictions = permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
reject_unlisted_recipient
# special recipient_restrictions which may be used by smtps/submission services
# (can be configured via UCR: mail/postfix/submission/restrictions/recipient/...)
# submission_recipient_restrictions =
#TLS settings
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_starttls_timeout = 300s
smtpd_timeout = 300s
smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3
smtpd_tls_protocols =
smtpd_tls_exclude_ciphers = RC4, aNULL
smtpd_tls_cert_file = /etc/univention/letsencrypt/signed.crt
smtpd_tls_key_file = /etc/univention/letsencrypt/domain.key
smtpd_tls_CAfile = /etc/univention/letsencrypt/chained.pem
smtpd_tls_received_header = no
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
smtpd_sasl_local_domain =
smtpd_sasl_security_options = noanonymous
# smtp client
smtp_tls_security_level = may
smtp_tls_mandatory_protocols = !SSLv2,!SSLv3
smtp_tls_protocols = !SSLv2,!SSLv3
smtp_tls_exclude_ciphers = RC4, aNULL
smtp_tls_policy_maps = hash:/etc/postfix/tls_policy
# Support broken clients like Microsoft Outlook Express 4.x which expect AUTH=LOGIN instead of AUTH LOGIN
broken_sasl_auth_clients = yes
# tls logging
smtp_tls_loglevel = 0
smtpd_tls_loglevel = 0
# EDH config
smtpd_tls_dh1024_param_file = /etc/postfix/dh_2048.pem
smtpd_tls_dh512_param_file = /etc/postfix/dh_512.pem
# use the Postfix SMTP server's cipher preference order instead of the remote client's cipher preference order.
tls_preempt_cipherlist = yes
# The Postfix SMTP server security grade for ephemeral elliptic-curve Diffie-Hellman (EECDH) key exchange
smtpd_tls_eecdh_grade = strong
# if virus scanning is desired, all mails can be redirected through amavis.
content_filter = smtp-amavis:[127.0.0.1]:10024
# Send a blind carbon copy of every mail to this account.
always_bcc = [mailarchive@domain]
master.cf
# Warning: This file is auto-generated and might be overwritten by
# univention-config-registry.
# Please edit the following file(s) instead:
# Warnung: Diese Datei wurde automatisch generiert und kann durch
# univention-config-registry ueberschrieben werden.
# Bitte bearbeiten Sie an Stelle dessen die folgende(n) Datei(en):
#
# /etc/univention/templates/files/etc/postfix/master.cf.d/10_services
# /etc/univention/templates/files/etc/postfix/master.cf.d/30_antivir
# /etc/univention/templates/files/etc/postfix/master.cf.d/70_policy
# /etc/univention/templates/files/etc/postfix/master.cf.d/99_local
#
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (no) (never) (100)
# ==========================================================================
smtp inet n - n - - smtpd
smtps inet n - n - - smtpd -o smtpd_sasl_auth_enable=yes -o smtpd_tls_wrappermode=yes
submission inet n - n - - smtpd -o smtpd_sasl_auth_enable=yes -o smtpd_enforce_tls=yes
#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 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 - n n - - local
#virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
anvil unix - - n - 1 anvil
scache unix - - y - 1 scache
smtp-amavis unix - - n - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o smtpd_authorized_xforward_hosts=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o receive_override_options=no_address_mappings
Wie Monit Postfix neustartet (per systemd oder direkt per /usr/sbin/postfix) wäre immer noch gut zu wissen.
Mir fällt nichts ein, was einen Prozess - während er läuft! - dazu bringen sollte einen Port den er gebunden hat, zu verlieren. Das sollte an sich nicht möglich sein.
Vielleicht kannst du in einer screen session laufen lassen:
while true; do date -Iseconds; netstat -anvpt | egrep ':25|:10025|:465|:587'; sleep 10; done | tee -a /var/log/ports.log
und mal schauen was bei dem Portverlust vor sich geht - was vor und nach einem Neustart durch Monit passiert.
Weiteres ließe sich jetzt nur noch durch hartnäckiges Debugging herausbekommen: Alle Prozesse und verwendete Ports durchgängig und genau protokollieren, evtl. strace/Debugger mitlaufen lassen… das sprengt jetzt etwas den Rahmen hier…
Monit startet über systemd den postfix neu. Das ist aber bisher nicht passiert (weil alle Ports bisher korrekt geantwortet haben) -> monit hatte ich erst nach dem Postfix Port Problem installiert.
Ich lasse jetzt mal ein paar Tage die Ports in die LOG loopen.
Der Fehler trat bei 2 gleichen Systemen unabhängig von einander innerhalb von 2 Tagen auf, seit dem aber nicht mehr.
Kann dass auch mit einem update/Upgrade zusammen hängen, welches “halbautomatisch” ausgeführt wurde?
Nachts läuft eine sudo('univention-upgrade --noninteractive')
der Fehler ist gerade wieder aufgetreten. Monit hat nicht neu gestartet, weil der Port 25 immer noch geantwortet hat. Mit Netstat zeigt sich hinter dem Port aber nicht “master” (postfix) sondern smtpd … !?
Hier die Ausgabe von netstat -tulpen
Bitte letzten Kommentar ignorieren.
Das ist ganz normal - das ist der Prozess den Postfix laut master.cf starten soll.
Der Postfix funktioniert ja auch noch, habe ich verstanden.