Extra Form
PHP PHP 8.0
CMS Rhymix 2.x

안녕하세요.

 

서버에서 직접 메일 서버를 구축하여 stmp 설정을 마친 상태입니다.

우분투에서 postfix 와 dovecot 을 이용해서 메일을 보내고 있는 상황입니다.

 

메일을 설정하기 위해 hostname 과 smtp 서버 호스트, 그리고 서버의 IP에 대한 리버스 도메인을 new.studyforus.com 으로 설정한 상태입니다.

또한, new.studyforus.com 의 let's encrypt 인증서를 생성해서 postfix 와 dovecot에 정상적인 인증서 설정을 마쳐놓은 상태입니다. (TLS1.3 버전입니다.)

 

라이믹스에서 메일을 테스트 하기 위해 

라이믹스 관리자 페이지 > 시스템 설정 > 알림 설정에서 메일 발송 방법을 smtp 로 설정해 놓은 상태입니다.

smtp 서버는 new.studyforus.com 설정하고 계정과 암호는 제대로 입력한 상태입니다.

 

smtp 포트 와 smtp 보안은 아래와 같이 설정해서 기진곰님의 고급 메일 발송 모듈을 이용해 테스트 메일을 발송해보았습니다.

 

smtp 포트 : 465 // smtp 보안 : SSL 일 때 아래와 같은 오류가 나타납니다.

Connection could not be established with host new.studyforus.com :stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages:
error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed

발송

 

smtp 포트 : 587 // smtp 보안 : TLS(STATTLS)일 때는 아래와 같은 오류가 나타납니다.

Unable to connect with TLS encryption

 

smtp 포트 : 25 // smtp 보안 : 사용하지 않음 일 때는 아래와 같은 오류가 나타납니다.

Connection could not be established with host new.studyforus.com :stream_socket_client(): unable to connect to none://new.studyforus.com:25 (Unable to find the socket transport "none" - did you forget to enable it when you configured PHP?)

 

 

서버에서 25,465,587 포트 모두 개방되어 있는 상태입니다.

 

telnet을 이용해서 25 포트를 이용해 메일을 발송하면 잘 발송이 됩니다.

 

또한 openssl s_client -connect new.studyforus.com:465 로 465 포트를 통해 메일을 발송해도 잘 발송이 됩니다.

 

사이트는 다른 별다른 것들이 설치 되지 않는 라이믹스 기본상태이며, PHP는 7.4와 8.0 버전에서 테스트 하였습니다.

이외의 메일 서버의 세팅은 잘 되어 있는 편입니다.

https://mail-tester.com 에서 메일 테스트시 10/10 을 받은 세팅입니다. (오늘 다시 테스트 해보니 여전이 10/10 이네요.)

https://xetown.com/topics/1123457

 

자체 메일 서버가 아닌 구글 smtp 메일 서버로 변경하여 메일 발송을 테스트 해보면 잘 발송이 됩니다.

혹시 smtp 설정을 자체 메일 서버로 설정하는 경우 추가로 제가 체크 해 볼 부분이 있을까요?

  • profile

    인증서를 인식하지 못하네요. 오래된 O/S에서 PHP만 업데이트하여 사용하고 계시다면 Let's Encrypt처럼 최근에 나온 인증서 발급 업체는 호환되지 않을 수도 있습니다. HTTP 요청을 보낼 때는 라이믹스 자체적으로 업데이트된 인증서 발급 기관 목록을 사용하지만, SMTP 접속에는 적용되지 않으니까요.

     

    위의 문제와, 인증서 없이 25번 포트로 접속되지 않는 문제 모두 2.0.5 릴리즈 이후 develop 브랜치에서 추가로 패치 시도중이니, 다시 테스트해 주시면 감사하겠습니다.

     

    [추가] 인증서 발급 기관 목록을 업데이트해도 안 되는 것을 보니, 인증서 설치가 잘못되었거나 그 밖에 뭔가 다른 문제가 있는지도 모르겠네요. 혹시 중간인증서 빼먹으셨나요?

  • profile profile
    네 테스트용 사이트이니, develop 브랜치 적용해보겠습니다.

    추가로 현재 OS는 16.04입니다. 보안패치도 올해로 마무리 되느라 곧 OS도 업데이트 예정에 있습니다.

    하지만 apache와 php는 ondrej PPA를 이용해서 업데이트를 하고 있고, openssl 도 1.1.1 로 업데이트 된 상태입니다. 그렇다면 인증서 발급시 사용되는 certbot 이 구 버전이거나 python 자체가 OS에서 지원하는 구버전일 가능성도 배제할 순 없겠네요.
  • profile profile
    CONNECTED(00000003)
    depth=0 CN = new.studyforus.com
    verify error:num=20:unable to get local issuer certificate
    verify return:1
    depth=0 CN = new.studyforus.com
    verify error:num=21:unable to verify the first certificate
    verify return:1
    depth=0 CN = new.studyforus.com
    verify return:1
    ---
    Certificate chain
    0 s:CN = new.studyforus.com
    i:C = US, O = Let's Encrypt, CN = R3
    ---

    중간인증서를 설치하지 않으셨네요.
  • profile profile
    추가글에 댓글 답니다.
    new.studyforus.com 에 대한 인증서이며, https 접속 확인과 와 ssllabs 에서 인증서 테스트시 A 등급을 받았습니다.
    중간인증서라함은 어떤 것을 의미하는지요?
  • profile profile

    openssl s_client를 사용해서 new.studyforus.com:8080 와 비교해 보세요.
    정상적으로 접속되는 웹 사이트는 Certificate chain에 나오는 인증서가 2장입니다.
    인증이 안 되는 SMTP는 인증서가 달랑 1장입니다.

    인증서 1장만으로 인증이 되는 것은 없습니다. 반드시 발급자의 인증서를 같이 넣어야 합니다.
    Let's Encrypt 기준으로 fullchain.pem = OK, cert.pem = 무쓸모입니다.

  • profile profile
    아! 이해했습니다.
    감사합니다. 적용해보고 테스트 해보겠습니다.
  • profile profile

    감사합니다.

    new.studyforus.com 를 전역에 설정하는 과정에서 3년전 서버 세팅시 초창기에 걸었던 심볼릭 링크가 cert.pem 기준으로 되어있었습니다.
    fullchain.pem 기준으로 심볼릭 링크를 변경해서 정상적으로 모든 SMTP 보안 방법에 대해 메일이 발송하는 것을 확인했습니다.

    아직 라이믹스를 디벨롭 브랜치로 업데이트 하기 전으로 정상적으로 메일이 발송하는 것을 확인했습니다.

    다시한번 거듭 감사드립니다. 도움이 많이 되었습니다.