Cannot assign requested address при попытке SMTP между Docker контейнерами

Есть несколько контейнеров, один из которых выступает в роли почтового сервера. Сервисы описаны в docker-compose.yml, для почтового используется docker.io/mailserver/docker-mailserver. Команда host позволяет увидеть адрес почтового сервера по его имени из каждого контейнера.

Однако, при попытке выполнить python код из любого контейнера, кроме почтового, возникает ошибка:

from smtplib import SMTP
smtp = SMTP(host='mailserver')
smtp.connect()

Стектрейс:

File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.9/smtplib.py", line 339, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "/usr/local/lib/python3.9/smtplib.py", line 310, in _get_socket
    return socket.create_connection((host, port), timeout,
  File "/usr/local/lib/python3.9/socket.py", line 843, in create_connection
    raise err
  File "/usr/local/lib/python3.9/socket.py", line 831, in create_connection
    sock.connect(sa)
OSError: [Errno 99] Cannot assign requested address

Содержание docker-compose.yml

version "3.7"

services:
  consumer:
    build: consumer/
    shm_size: '15gb'
    environment:
      LISTENER_ADDR: http://client:8243
  client:
    build: producer/
    volumes:
      - domain-model-updates:/volume
    ports:
      - 8243:8243
  mailserver:
    image: docker.io/mailserver/docker-mailserver:latest
    hostname: ${HOSTNAME}
    domainname: ${DOMAINNAME}
    container_name: ${CONTAINER_NAME}
    env_file: ./mailserver/mailserver.env
    ports:
      - "25:25"
      - "143:143"
      - "587:587"
      - "993:993"
    volumes:
      - maildata:/var/mail
      - mailstate:/var/mail-state
      - maillogs:/var/log/mail
      - ./mailserver/config/:/tmp/docker-mailserver/${SELINUX_LABEL}
    cap_add: [ "NET_ADMIN", "SYS_PTRACE" ]

volumes:
  domain-model-updates:
    external: true
  maildata:
  mailstate:
  maillogs

Запускаю как docker-compose up

При этом netstat в контейнере (не почтовом) после ошибки показывает TCP соединение между к ip почтового контейнера по 25 порту в состоянии TIME_WAIT.


Ответы (0 шт):