gutmensch / docker-dmarc-report

229 stars 26 forks source link

1 BAD [CLIENTBUG] syntax: unexpected char: 's' #57

Closed darylf closed 3 months ago

darylf commented 4 months ago

I'm trying this out in my test enviornment with a docker container, but I'm getting some sort of syntax error from the IMAPClient. Is it something I did wrong in the config?

My error:

Started at Fri May 24 04:28:46 2024
Using Mail::IMAPClient version 3.43 on perl 5.034002
Connecting with IO::Socket::SSL PeerAddr imap.zoho.com PeerPort 993 Proto tcp Timeout 600 Debug 1
Connected to imap.zoho.com
Read:   * OK svwall.zoho.com IMAP4 Server (Zoho Mail IMAP4rev1 Server version 1.0)
Sending: 1 STARTTLS
Sent 12 bytes
Read:   1 BAD [CLIENTBUG] syntax: unexpected char: 's'
ERROR: 1 BAD [CLIENTBUG] syntax: unexpected char: 's' at /usr/local/share/perl5/site_perl/Mail/IMAPClient.pm line 1388.
    Mail::IMAPClient::__ANON__("1 BAD [CLIENTBUG] syntax: unexpected char: 's'\x{d}\x{a}") called at /usr/local/share/perl5/site_perl/Mail/IMAPClient.pm line 1424
    Mail::IMAPClient::_get_response(Mail::IMAPClient=HASH(0x7f82356dcc00), 1, undef) called at /usr/local/share/perl5/site_perl/Mail/IMAPClient.pm line 1350
    Mail::IMAPClient::_imap_command_do(Mail::IMAPClient=HASH(0x7f82356dcc00), "STARTTLS") called at /usr/local/share/perl5/site_perl/Mail/IMAPClient.pm line 1248
    Mail::IMAPClient::_imap_command(Mail::IMAPClient=HASH(0x7f82356dcc00), "STARTTLS") called at /usr/local/share/perl5/site_perl/Mail/IMAPClient.pm line 443
    Mail::IMAPClient::starttls(Mail::IMAPClient=HASH(0x7f82356dcc00)) called at /usr/local/share/perl5/site_perl/Mail/IMAPClient.pm line 420
    Mail::IMAPClient::Socket(Mail::IMAPClient=HASH(0x7f82356dcc00), IO::Socket::SSL=GLOB(0x7f82357ae410)) called at /usr/local/share/perl5/site_perl/Mail/IMAPClient.pm line 369
    Mail::IMAPClient::connect(Mail::IMAPClient=HASH(0x7f82356dcc00)) called at /usr/local/share/perl5/site_perl/Mail/IMAPClient.pm line 315
    Mail::IMAPClient::new("Mail::IMAPClient", "Server", "imap.zoho.com", "Port", 993, "Ssl", 1, "Starttls", ...) called at /usr/bin/dmarcts-report-parser.pl line 305
ERROR: 1 BAD [CLIENTBUG] syntax: unexpected char: 's' at /usr/local/share/perl5/site_perl/Mail/IMAPClient.pm line 1298.
    Mail::IMAPClient::_imap_command(Mail::IMAPClient=HASH(0x7f82356dcc00), "STARTTLS") called at /usr/local/share/perl5/site_perl/Mail/IMAPClient.pm line 443
    Mail::IMAPClient::starttls(Mail::IMAPClient=HASH(0x7f82356dcc00)) called at /usr/local/share/perl5/site_perl/Mail/IMAPClient.pm line 420
    Mail::IMAPClient::Socket(Mail::IMAPClient=HASH(0x7f82356dcc00), IO::Socket::SSL=GLOB(0x7f82357ae410)) called at /usr/local/share/perl5/site_perl/Mail/IMAPClient.pm line 369
    Mail::IMAPClient::connect(Mail::IMAPClient=HASH(0x7f82356dcc00)) called at /usr/local/share/perl5/site_perl/Mail/IMAPClient.pm line 315
    Mail::IMAPClient::new("Mail::IMAPClient", "Server", "imap.zoho.com", "Port", 993, "Ssl", 1, "Starttls", ...) called at /usr/bin/dmarcts-report-parser.pl line 305
dmarcts-report-parser.pl: IMAP Failure: 1 BAD [CLIENTBUG] syntax: unexpected char: 's' at /usr/bin/dmarcts-report-parser.pl line 305.
use tls without verify servercert.
connection to imap.zoho.com with Ssl => 1, User => _REDACTED_ Ignoresizeerrors => 0

My config:

version: "3.6"

services:
  dmarc-report:
    image: "gutmensch/dmarc-report:latest"
    hostname: dmarc-report
    container_name: dmarc-report
    depends_on:
      db:
        condition: service_healthy
    ports:
      - "8001:80"
    environment:
      - "REPORT_DB_HOST=db"
      - "REPORT_DB_PORT=3306"
      - "REPORT_DB_NAME=dmarc_report"
      - "REPORT_DB_USER=dmarc_report"
      - "REPORT_DB_PASS=dbpassword"
      - "PARSER_IMAP_SERVER=imap.zoho.com"
      - "PARSER_IMAP_PORT=993"
      - "PARSER_IMAP_SSL=1"
      - "PARSER_IMAP_USER=REDACTED"
      - "PARSER_IMAP_PASS=REDACTED"
      - "PARSER_IMAP_READ_FOLDER=dmarc/incoming"
      - "PARSER_IMAP_MOVE_FOLDER=dmarc/processed"
      - "PARSER_IMAP_MOVE_FOLDER_ERR=dmarc/error"

  db:
    image: mariadb:10
    command: --skip-innodb-read-only-compressed
    environment:
      - "MYSQL_ROOT_PASSWORD=dbrootpassword"
      - "MYSQL_DATABASE=dmarc_report"
      - "MYSQL_USER=dmarc_report"
      - "MYSQL_PASSWORD=dbpassword"
    volumes:
      - ./dmarc-report-db:/var/lib/mysql
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-pdbrootpassword"]
      interval: 10s
      timeout: 10s
      retries: 5
gutmensch commented 3 months ago

Looks like you are using Starttls on an SSL connection (this does not work :). See the comments here https://github.com/gutmensch/docker-dmarc-report/blob/master/manifest/usr/bin/dmarcts-report-parser.conf#L29

Try setting

PARSER_IMAP_TLS=0

too!