dovecot: auth-worker: mysql server has gone away

Dieses Thema im Forum "Installation und Konfiguration" wurde erstellt von Kaimane, 14. Jan. 2013.

  1. Kaimane

    Kaimane Member

    [gelöst] dovecot: auth-worker: mysql server has gone away

    Hallo zusammen.

    Habe Dovecot auf Ubuntu 12.04 in Betrieb genommen. Wenn man sich per POP3 auf dem Server einloggt erscheint häufig:
    Code:
    Jan 14 15:35:00 s1 dovecot: auth-worker: Error: mysql: Query failed, retrying: MySQL server has gone away
    Jan 14 15:35:00 s1 dovecot: pop3: Error: Internal auth failure (client-pid=29335 client-id=1)
    Anbei die vers. Konfigurationen:

    main.cf
    Code:
    alias_database = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases
    alias_maps = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases
    append_dot_mydomain = no
    biff = no
    body_checks = regexp:/etc/postfix/body_checks
    broken_sasl_auth_clients = yes
    config_directory = /etc/postfix
    content_filter = amavis:[127.0.0.1]:10024
    dovecot_destination_recipient_limit = 1
    header_checks = regexp:/etc/postfix/header_checks
    html_directory = /usr/share/doc/postfix/html
    inet_interfaces = all
    inet_protocols = all
    mailbox_size_limit = 0
    maildrop_destination_concurrency_limit = 1
    maildrop_destination_recipient_limit = 1
    mime_header_checks = regexp:/etc/postfix/mime_header_checks
    mydestination = xxx.xxx.de, localhost, localhost.localdomain
    myhostname = xxx.xxx.de
    mynetworks = 172.16.0.0/12,127.0.0.0/8 [::1]/128
    myorigin = /etc/mailname
    nested_header_checks = regexp:/etc/postfix/nested_header_checks
    owner_request_special = no
    proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps
    readme_directory = /usr/share/doc/postfix
    receive_override_options = no_address_mappings
    recipient_delimiter = +
    relay_domains = mysql:/etc/postfix/mysql-virtual_relaydomains.cf
    relay_recipient_maps = mysql:/etc/postfix/mysql-virtual_relayrecipientmaps.cf
    relayhost =
    smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
    smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
    smtpd_client_message_rate_limit = 100
    smtpd_client_restrictions = check_client_access mysql:/etc/postfix/mysql-virtual_client.cf
    smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unauth_destination
    smtpd_sasl_auth_enable = yes
    smtpd_sasl_authenticated_header = yes
    smtpd_sasl_path = private/auth
    smtpd_sasl_type = dovecot
    smtpd_sender_restrictions = check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf
    smtpd_tls_cert_file = /etc/postfix/smtpd.cert
    smtpd_tls_key_file = /etc/postfix/smtpd.key
    smtpd_tls_security_level = may
    smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
    smtpd_use_tls = yes
    transport_maps = proxy:mysql:/etc/postfix/mysql-virtual_transports.cf
    virtual_alias_domains =
    virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, proxy:mysql:/etc/postfix/mysql-virtual_email2email.cf, hash:/var/lib/mailman/data/virtual-mailman
    virtual_gid_maps = static:5000
    virtual_mailbox_base = /var/vmail
    virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf
    virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf
    virtual_transport = dovecot
    virtual_uid_maps = static:5000
    dovecot.conf
    Code:
    # 2.0.19: /etc/dovecot/dovecot.conf
    # OS: Linux 3.2.13-grsec-xxxx-grs-ipv6-64 x86_64 Ubuntu 12.04.1 LTS
    auth_mechanisms = plain login
    disable_plaintext_auth = no
    listen = *,[::]
    log_timestamp = "%Y-%m-%d %H:%M:%S "
    mail_privileged_group = vmail
    passdb {
      args = /etc/dovecot/dovecot-sql.conf
      driver = sql
    }
    plugin {
      quota = dict:user::file:/var/vmail/%d/%n/.quotausage
      sieve = /var/vmail/%d/%n/.sieve
    }
    protocols = imap pop3
    service auth {
      unix_listener /var/spool/postfix/private/auth {
        group = postfix
        mode = 0660
        user = postfix
      }
      unix_listener auth-userdb {
        group = vmail
        mode = 0600
        user = vmail
      }
      user = root
    }
    ssl_cert = </etc/postfix/smtpd.cert
    ssl_key = </etc/postfix/smtpd.key
    userdb {
      args = /etc/dovecot/dovecot-sql.conf
      driver = sql
    }
    protocol imap {
      mail_plugins = quota imap_quota
    }
    protocol pop3 {
      mail_plugins = quota
      pop3_uidl_format = %08Xu%08Xv
    }
    protocol lda {
      mail_plugins = sieve quota
    }
    
    Hat jemand von euch einen Hinweis oder dieses Problem schon mal gehabt?
    Danke im Voraus!
     
    Zuletzt bearbeitet: 15. Jan. 2013
  2. Till

    Till Administrator

    Hast Du denn Probleme beim Login per pop3 oder gehte s nur um die Meldung imLog? Laut Log war die mysql Verbindung nicht da, das kann z.B. durch einen mysql timeout sein und die Verbindung sollte dann automatisch von Dovecot wieder hergestellt werden.
     
  3. Kaimane

    Kaimane Member

    Nein, der Login per pop3 funktioniert. Nur die Häufigkeit des Fehlers macht mich stutzig. Jede Minute wird dieser ausgegeben. Kann man hier das timeout hochsetzen, damit der Fehler ausbleibt?

    --- EDIT ---

    Ich tippe hier eher auf Mysql.

    Beim Versand über Roundcube erhalte ich teilweise 4.3.0 temporary lookup failure. Als könne er manchmal nicht in die DB schauen.
    Auch beim Auth-Worker das Problem, das ständig die Verbindung abbricht.

    Welche Stellschrauben kann man hier bei Mysql setzen, damit die Verbindungen nicht abgebrochen werden?

    my.cnf
    Code:
    max_connections = 600
    Ist derzeit eingestellt.
    Gibt es vllt noch weitere Settings?
     
    Zuletzt bearbeitet: 14. Jan. 2013
  4. Till

    Till Administrator

  5. Kaimane

    Kaimane Member

    Erst mal vielen Dank Till für deine Unterstützung.

    Das Thema max_connections kann es nicht sein.
    Seitdem Mysql läuft waren gerade mal 98 Verbindung im Peek gleichzeitig offen.

    Zu deinen Links:
    Die Mysql Doku spicht davon, dass die "Mysql server has gone away" Fehler meistens mit dem Timeout zu tun haben (MySQL :: MySQL 5.1 Referenzhandbuch :: A.2.8 MySQL server has gone away-Fehler).
    Standardmäßig ist wait_timeout auf 28800 (also 8h) gesetzt.

    Nun ist es mir jedoch ein Rätzel, wenn die max_connections nicht voll sind und der Timeout auf 8 Stunden steht, weshalb die Verbindung regelmäßig unterbrochen wird (Dovecot auth-worker, Postfix wähend der lookups).

    Kann wait_timeout auf das geschilderte Problem Einfluss nehmen?
    Gibt es ein empfohlenen Wert für wait_timeout?
     
  6. Kaimane

    Kaimane Member

    Kurzes Feedback zum o. g. Problem:

    Es hatte weder etwas mit 'wait_timeout' zu tun noch mit 'max_connections', etc.
    Am Ende lag es daran, dass MySQL mit dem falschen character-set und der falschen collation gestartet wurde.

    In meinem Fall musste ich in der my.cnf
    Code:
    [mysqld]
    #
    # * Set Charset
    #
    character-set-server    = utf8
    collation-server        = utf8_general_ci
    setzen, damit wieder alles reibungslos lief.

    Hintergrund: es handelte sich um einen Serverumzug.
    MySQL wurde auf dem alten Server mit den o. g. Einstellungen betrieben.

    Nochmal vielen Dank an dich Till, für deine Unterstützung!
     
  7. Till

    Till Administrator

    Danke dass Du die Lösung gepostet hast!
     

Diese Seite empfehlen