【Docker】Port25 の罠にハマった話【Mailserver】

はじめに
メールサーバーの導入は毎度苦労します。
GWということで重い腰を上げることにしました。
今回は こちら 様を参考に docker-mailserver で導入させていただきました。
導入方法は紹介サイトが多くあるので省きます。
mailserver port 25 … 
OP25B(Outbound Port 25 Blocking) の苦労話でしょ?
自分もそう思いましたが、別の問題が原因でした。
導入と不具合
まず失敗の設定ファイルです。 hostname domainname などは仮です。
どこが問題かわかりますか?
version: '3.8'
services:
  mailserver:
    image: ghcr.io/docker-mailserver/docker-mailserver:latest
    container_name: mailserver
    # If the FQDN for your mail-server is only two labels (eg: example.com),
    # you can assign this entirely to `hostname` and remove `domainname`.
    hostname: hostname
    domainname: domainname
    env_file: mailserver.env
    # More information about the mail-server ports:
    # https://docker-mailserver.github.io/docker-mailserver/latest/config/security/understanding-the-ports/
    # To avoid conflicts with yaml base-60 float, DO NOT remove the quotation marks.
    ports:
      - 25:25    # SMTP  (explicit TLS => STARTTLS)
      - 465:465  # ESMTP (implicit TLS)
      - 993:993  # IMAP4 (implicit TLS)
    volumes:
      - ./docker-data/dms/mail-data/:/var/mail/
      - ./docker-data/dms/mail-state/:/var/mail-state/
      - ./docker-data/dms/mail-logs/:/var/log/mail/
      - ./docker-data/dms/config/:/tmp/docker-mailserver/
      - /etc/localtime:/etc/localtime:ro
      - /etc/letsencrypt:/etc/letsencrypt
    cap_add:
      - NET_ADMIN
    restart: always導入が完了し 自分宛てにメールを送信…送受信成功
GMail へ送信… 送信成功
ICloud へ送信… 送信成功
GMail から自分宛てに送信

あれれ?おかしいぞ?
iCloud から送信

だめだ、外部から受信できないみたいです。
GMail の詳細も
The recipient server did not accept our requests to connect. Learn more at https://support.google.com/mail/answer/7720 受信側サーバーが接続要求を受け入れませんでした。 詳しくは https://support.google.com/mail/answer/7720とのことで、当方サーバーが拒否っているようです。
当方 OP25B 制限はない環境で、リレーサーバーは不要な環境です。
検索しても OP25B 対策しかヒットしない状況でした。
ルーターの NAT設定 
ダイナミックDNSの設定
 などもチェックしましたが問題なし…
解決
色々検索し解決方法が見つけました。
こちら
Could you try if it works if you put the25:25in quotes? I.e.,"25:25"; this is a known issue with the way the yaml is parsed; see this note in the documentation; https://docs.docker.com/compose/compose-file/#ports
感謝!
docker ps でポートを確認してみると
2204735f2342   ghcr.io/docker-mailserver/docker-mailserver:latest   "/usr/bin/dumb-init …"   4 seconds ago   Up 3 seconds   25/tcp, 110/tcp, 143/tcp, 0.0.0.0:465->465/tcp, :::465->465/tcp, 587/tcp, 995/tcp, 4190/tcp, 0.0.0.0:993->993/tcp, :::993->993/tcp, 0.0.0.0:32829->1525/tcp, :::32829->1525/tcp   mailserver確かに 25/tcp が外から見えなく 
よくわからんポート 0.0.0.0:32829->1525/tcp, :::32829->1525/tcp が開いている。
どうやら 25:25 を YAML が60進数で解釈され 25*60+25 = 1525 へ変換されているようです。
ポート設定は “” をつけるのを徹底したほうが良さそうです。 
で修正後の設定がこちら
version: '3.8'
services:
  mailserver:
    image: ghcr.io/docker-mailserver/docker-mailserver:latest
    container_name: mailserver
    # If the FQDN for your mail-server is only two labels (eg: example.com),
    # you can assign this entirely to `hostname` and remove `domainname`.
    hostname: hostname
    domainname: domainname
    env_file: mailserver.env
    # More information about the mail-server ports:
    # https://docker-mailserver.github.io/docker-mailserver/latest/config/security/understanding-the-ports/
    # To avoid conflicts with yaml base-60 float, DO NOT remove the quotation marks.
    ports:
      - "25:25"    # SMTP  (explicit TLS => STARTTLS)
      - "465:465"  # ESMTP (implicit TLS)
      - "993:993"  # IMAP4 (implicit TLS)
    volumes:
      - ./docker-data/dms/mail-data/:/var/mail/
      - ./docker-data/dms/mail-state/:/var/mail-state/
      - ./docker-data/dms/mail-logs/:/var/log/mail/
      - ./docker-data/dms/config/:/tmp/docker-mailserver/
      - /etc/localtime:/etc/localtime:ro
      - /etc/letsencrypt:/etc/letsencrypt
    cap_add:
      - NET_ADMIN
    restart: alwaysports の設定を “” ダブルクォーテーション でくくってます。
docker ps の結果は
a9113d712b83   ghcr.io/docker-mailserver/docker-mailserver:latest   "/usr/bin/dumb-init …"   5 seconds ago   Up 3 seconds   110/tcp, 0.0.0.0:25->25/tcp, :::25->25/tcp, 143/tcp, 0.0.0.0:465->465/tcp, :::465->465/tcp, 587/tcp, 995/tcp, 0.0.0.0:993->993/tcp, :::993->993/tcp, 4190/tcp   mailserver0.0.0.0:25->25/tcp, :::25->25/tcp,
ちゃんと外にポートがつながったようです。
GMail からも iCloud からもメールが届くようになりました。
あーこれは仕様知らないとわからんですね。
あとがき
GW を半分使い切ってしまいました。
全然メール環境不要なのですが、動かないと気になって夜しか眠れないですもんね。
Docker で楽しようと思ったら思わぬ落とし穴に落ちた感じでした
その後 Gmail や iCloud から送ったテストメールが山のように届きました。