domainaware / parsedmarc

A Python package and CLI for parsing aggregate and forensic DMARC reports
https://domainaware.github.io/parsedmarc/
Apache License 2.0
981 stars 212 forks source link

Microsoft Graph Read timed out #337

Closed dt-valentin-magnan closed 7 months ago

dt-valentin-magnan commented 2 years ago

Hello,

I'm facing 2 recurrent errors while using msgraph as authentication for the mailbox.

Error 1 happens on:

Error 2 happens on:

Here are the 2 errors encountered:

Error 1

Jul 29 11:41:26 server parsedmarc[2881608]: Traceback (most recent call last):
Jul 29 11:41:26 server parsedmarc[2881608]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/urllib3/response.py", line 441, in _error_catcher
Jul 29 11:41:26 server parsedmarc[2881608]:     yield
Jul 29 11:41:26 server parsedmarc[2881608]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/urllib3/response.py", line 767, in read_chunked
Jul 29 11:41:26 server parsedmarc[2881608]:     self._update_chunk_length()
Jul 29 11:41:26 server parsedmarc[2881608]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/urllib3/response.py", line 697, in _update_chunk_length
Jul 29 11:41:26 server parsedmarc[2881608]:     line = self._fp.fp.readline()
Jul 29 11:41:26 server parsedmarc[2881608]:   File "/usr/lib/python3.9/socket.py", line 704, in readinto
Jul 29 11:41:26 server parsedmarc[2881608]:     return self._sock.recv_into(b)
Jul 29 11:41:26 server parsedmarc[2881608]:   File "/usr/lib/python3.9/ssl.py", line 1241, in recv_into
Jul 29 11:41:26 server parsedmarc[2881608]:     return self.read(nbytes, buffer)
Jul 29 11:41:26 server parsedmarc[2881608]:   File "/usr/lib/python3.9/ssl.py", line 1099, in read
Jul 29 11:41:26 server parsedmarc[2881608]:     return self._sslobj.read(len, buffer)
Jul 29 11:41:26 server parsedmarc[2881608]: socket.timeout: The read operation timed out
Jul 29 11:41:26 server parsedmarc[2881608]: During handling of the above exception, another exception occurred:
Jul 29 11:41:26 server parsedmarc[2881608]: Traceback (most recent call last):
Jul 29 11:41:26 server parsedmarc[2881608]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/requests/models.py", line 760, in generate
Jul 29 11:41:26 server parsedmarc[2881608]:     for chunk in self.raw.stream(chunk_size, decode_content=True):
Jul 29 11:41:26 server parsedmarc[2881608]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/urllib3/response.py", line 575, in stream
Jul 29 11:41:26 server parsedmarc[2881608]:     for line in self.read_chunked(amt, decode_content=decode_content):
Jul 29 11:41:26 server parsedmarc[2881608]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/urllib3/response.py", line 796, in read_chunked
Jul 29 11:41:26 server parsedmarc[2881608]:     self._original_response.close()
Jul 29 11:41:26 server parsedmarc[2881608]:   File "/usr/lib/python3.9/contextlib.py", line 135, in __exit__
Jul 29 11:41:26 server parsedmarc[2881608]:     self.gen.throw(type, value, traceback)
Jul 29 11:41:26 server parsedmarc[2881608]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/urllib3/response.py", line 446, in _error_catcher
Jul 29 11:41:26 server parsedmarc[2881608]:     raise ReadTimeoutError(self._pool, None, "Read timed out.")
Jul 29 11:41:26 server parsedmarc[2881608]: urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='graph.microsoft.com', port=443): Read timed out.
Jul 29 11:41:26 server parsedmarc[2881608]: During handling of the above exception, another exception occurred:
Jul 29 11:41:26 server parsedmarc[2881608]: Traceback (most recent call last):
Jul 29 11:41:26 server parsedmarc[2881608]:   File "/usr/local/bin/parsedmarc", line 8, in <module>
Jul 29 11:41:26 server parsedmarc[2881608]:     sys.exit(_main())
Jul 29 11:41:26 server parsedmarc[2881608]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/parsedmarc/cli.py", line 927, in _main
Jul 29 11:41:26 server parsedmarc[2881608]:     watch_inbox(
Jul 29 11:41:26 server parsedmarc[2881608]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/parsedmarc/__init__.py", line 1261, in watch_inbox
Jul 29 11:41:26 server parsedmarc[2881608]:     mailbox_connection.watch(check_callback=check_callback,
Jul 29 11:41:26 server parsedmarc[2881608]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/parsedmarc/mail/graph.py", line 106, in watch
Jul 29 11:41:26 server parsedmarc[2881608]:     check_callback(self)
Jul 29 11:41:26 server parsedmarc[2881608]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/parsedmarc/__init__.py", line 1247, in check_callback
Jul 29 11:41:26 server parsedmarc[2881608]:     res = get_dmarc_reports_from_mailbox(connection=connection,
Jul 29 11:41:26 server parsedmarc[2881608]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/parsedmarc/__init__.py", line 1087, in get_dmarc_reports_from_mailbox
Jul 29 11:41:26 server parsedmarc[2881608]:     messages = connection.fetch_messages(reports_folder)
Jul 29 11:41:26 server parsedmarc[2881608]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/parsedmarc/mail/graph.py", line 62, in fetch_messages
Jul 29 11:41:26 server parsedmarc[2881608]:     result = self._client.get(url)
Jul 29 11:41:26 server parsedmarc[2881608]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/msgraph/core/_graph_client.py", line 46, in wrapper
Jul 29 11:41:26 server parsedmarc[2881608]:     return func(*args, **kwargs)
Jul 29 11:41:26 server parsedmarc[2881608]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/msgraph/core/_graph_client.py", line 93, in get
Jul 29 11:41:26 server parsedmarc[2881608]:     return self.graph_session.get(self._graph_url(url), **kwargs)
Jul 29 11:41:26 server parsedmarc[2881608]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/requests/sessions.py", line 542, in get
Jul 29 11:41:26 server parsedmarc[2881608]:     return self.request('GET', url, **kwargs)
Jul 29 11:41:26 server parsedmarc[2881608]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/requests/sessions.py", line 529, in request
Jul 29 11:41:26 server parsedmarc[2881608]:     resp = self.send(prep, **send_kwargs)
Jul 29 11:41:26 server parsedmarc[2881608]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/requests/sessions.py", line 687, in send
Jul 29 11:41:26 server parsedmarc[2881608]:     r.content
Jul 29 11:41:26 server parsedmarc[2881608]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/requests/models.py", line 838, in content
Jul 29 11:41:26 server parsedmarc[2881608]:     self._content = b''.join(self.iter_content(CONTENT_CHUNK_SIZE)) or b''
Jul 29 11:41:26 server parsedmarc[2881608]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/requests/models.py", line 767, in generate
Jul 29 11:41:26 server parsedmarc[2881608]:     raise ConnectionError(e)
Jul 29 11:41:26 server parsedmarc[2881608]: requests.exceptions.ConnectionError: HTTPSConnectionPool(host='graph.microsoft.com', port=443): Read timed out.
Jul 29 11:41:26 server systemd[1]: parsedmarc.service: Main process exited, code=exited, status=1/FAILURE
Jul 29 11:41:26 server systemd[1]: parsedmarc.service: Failed with result 'exit-code'.

Error 2

Jul 27 17:25:49 server parsedmarc[2877009]: Traceback (most recent call last):
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/urllib3/connectionpool.py", line 703, in urlopen
Jul 27 17:25:49 server parsedmarc[2877009]:     httplib_response = self._make_request(
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/urllib3/connectionpool.py", line 449, in _make_request
Jul 27 17:25:49 server parsedmarc[2877009]:     six.raise_from(e, None)
Jul 27 17:25:49 server parsedmarc[2877009]:   File "<string>", line 3, in raise_from
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/urllib3/connectionpool.py", line 444, in _make_request
Jul 27 17:25:49 server parsedmarc[2877009]:     httplib_response = conn.getresponse()
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/usr/lib/python3.9/http/client.py", line 1349, in getresponse
Jul 27 17:25:49 server parsedmarc[2877009]:     response.begin()
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/usr/lib/python3.9/http/client.py", line 316, in begin
Jul 27 17:25:49 server parsedmarc[2877009]:     version, status, reason = self._read_status()
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/usr/lib/python3.9/http/client.py", line 277, in _read_status
Jul 27 17:25:49 server parsedmarc[2877009]:     line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/usr/lib/python3.9/socket.py", line 704, in readinto
Jul 27 17:25:49 server parsedmarc[2877009]:     return self._sock.recv_into(b)
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/usr/lib/python3.9/ssl.py", line 1241, in recv_into
Jul 27 17:25:49 server parsedmarc[2877009]:     return self.read(nbytes, buffer)
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/usr/lib/python3.9/ssl.py", line 1099, in read
Jul 27 17:25:49 server parsedmarc[2877009]:     return self._sslobj.read(len, buffer)
Jul 27 17:25:49 server parsedmarc[2877009]: ConnectionResetError: [Errno 104] Connection reset by peer
Jul 27 17:25:49 server parsedmarc[2877009]: During handling of the above exception, another exception occurred:
Jul 27 17:25:49 server parsedmarc[2877009]: Traceback (most recent call last):
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/requests/adapters.py", line 440, in send
Jul 27 17:25:49 server parsedmarc[2877009]:     resp = conn.urlopen(
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/urllib3/connectionpool.py", line 785, in urlopen
Jul 27 17:25:49 server parsedmarc[2877009]:     retries = retries.increment(
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/urllib3/util/retry.py", line 550, in increment
Jul 27 17:25:49 server parsedmarc[2877009]:     raise six.reraise(type(error), error, _stacktrace)
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/urllib3/packages/six.py", line 769, in reraise
Jul 27 17:25:49 server parsedmarc[2877009]:     raise value.with_traceback(tb)
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/urllib3/connectionpool.py", line 703, in urlopen
Jul 27 17:25:49 server parsedmarc[2877009]:     httplib_response = self._make_request(
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/urllib3/connectionpool.py", line 449, in _make_request
Jul 27 17:25:49 server parsedmarc[2877009]:     six.raise_from(e, None)
Jul 27 17:25:49 server parsedmarc[2877009]:   File "<string>", line 3, in raise_from
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/urllib3/connectionpool.py", line 444, in _make_request
Jul 27 17:25:49 server parsedmarc[2877009]:     httplib_response = conn.getresponse()
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/usr/lib/python3.9/http/client.py", line 1349, in getresponse
Jul 27 17:25:49 server parsedmarc[2877009]:     response.begin()
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/usr/lib/python3.9/http/client.py", line 316, in begin
Jul 27 17:25:49 server parsedmarc[2877009]:     version, status, reason = self._read_status()
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/usr/lib/python3.9/http/client.py", line 277, in _read_status
Jul 27 17:25:49 server parsedmarc[2877009]:     line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/usr/lib/python3.9/socket.py", line 704, in readinto
Jul 27 17:25:49 server parsedmarc[2877009]:     return self._sock.recv_into(b)
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/usr/lib/python3.9/ssl.py", line 1241, in recv_into
Jul 27 17:25:49 server parsedmarc[2877009]:     return self.read(nbytes, buffer)
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/usr/lib/python3.9/ssl.py", line 1099, in read
Jul 27 17:25:49 server parsedmarc[2877009]:     return self._sslobj.read(len, buffer)
Jul 27 17:25:49 server parsedmarc[2877009]: urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
Jul 27 17:25:49 server parsedmarc[2877009]: During handling of the above exception, another exception occurred:
Jul 27 17:25:49 server parsedmarc[2877009]: Traceback (most recent call last):
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/usr/local/bin/parsedmarc", line 8, in <module>
Jul 27 17:25:49 server parsedmarc[2877009]:     sys.exit(_main())
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/parsedmarc/cli.py", line 927, in _main
Jul 27 17:25:49 server parsedmarc[2877009]:     watch_inbox(
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/parsedmarc/__init__.py", line 1261, in watch_inbox
Jul 27 17:25:49 server parsedmarc[2877009]:     mailbox_connection.watch(check_callback=check_callback,
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/parsedmarc/mail/graph.py", line 106, in watch
Jul 27 17:25:49 server parsedmarc[2877009]:     check_callback(self)
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/parsedmarc/__init__.py", line 1247, in check_callback
Jul 27 17:25:49 server parsedmarc[2877009]:     res = get_dmarc_reports_from_mailbox(connection=connection,
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/parsedmarc/__init__.py", line 1087, in get_dmarc_reports_from_mailbox
Jul 27 17:25:49 server parsedmarc[2877009]:     messages = connection.fetch_messages(reports_folder)
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/parsedmarc/mail/graph.py", line 62, in fetch_messages
Jul 27 17:25:49 server parsedmarc[2877009]:     result = self._client.get(url)
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/msgraph/core/_graph_client.py", line 46, in wrapper
Jul 27 17:25:49 server parsedmarc[2877009]:     return func(*args, **kwargs)
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/msgraph/core/_graph_client.py", line 93, in get
Jul 27 17:25:49 server parsedmarc[2877009]:     return self.graph_session.get(self._graph_url(url), **kwargs)
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/requests/sessions.py", line 542, in get
Jul 27 17:25:49 server parsedmarc[2877009]:     return self.request('GET', url, **kwargs)
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/requests/sessions.py", line 529, in request
Jul 27 17:25:49 server parsedmarc[2877009]:     resp = self.send(prep, **send_kwargs)
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/requests/sessions.py", line 645, in send
Jul 27 17:25:49 server parsedmarc[2877009]:     r = adapter.send(request, **kwargs)
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/msgraph/core/middleware/middleware.py", line 44, in send
Jul 27 17:25:49 server parsedmarc[2877009]:     return self._first_middleware.send(request, **kwargs)
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/msgraph/core/middleware/authorization.py", line 23, in send
Jul 27 17:25:49 server parsedmarc[2877009]:     response = super().send(request, **kwargs)
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/msgraph/core/middleware/middleware.py", line 66, in send
Jul 27 17:25:49 server parsedmarc[2877009]:     return self.next.send(request, **kwargs)
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/msgraph/core/middleware/retry.py", line 118, in send
Jul 27 17:25:49 server parsedmarc[2877009]:     response = super().send(request, **kwargs)
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/msgraph/core/middleware/middleware.py", line 66, in send
Jul 27 17:25:49 server parsedmarc[2877009]:     return self.next.send(request, **kwargs)
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/msgraph/core/middleware/telemetry.py", line 22, in send
Jul 27 17:25:49 server parsedmarc[2877009]:     response = super().send(request, **kwargs)
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/msgraph/core/middleware/middleware.py", line 65, in send
Jul 27 17:25:49 server parsedmarc[2877009]:     return super().send(request, **kwargs)
Jul 27 17:25:49 server parsedmarc[2877009]:   File "/opt/venvs/parsedmarc/lib/python3.9/site-packages/requests/adapters.py", line 501, in send
Jul 27 17:25:49 server parsedmarc[2877009]:     raise ConnectionError(err, request=request)
Jul 27 17:25:49 server parsedmarc[2877009]: requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
Jul 27 17:25:49 server systemd[1]: parsedmarc.service: Main process exited, code=exited, status=1/FAILURE
Jul 27 17:25:49 server systemd[1]: parsedmarc.service: Failed with result 'exit-code'.

Do you have any idea what might cause it? It seems to be a network issue:

Is msgraph implementation in parsedmarc reliable?

Thank for your help.

Best regards,

Valentin Magnan

undostres321 commented 5 months ago

How have you fixed this error? I'm having the same problem with the wait time.