[Linux] Mail - postfix, sendmail

:)·2024년 6월 12일
0

Linux

목록 보기
14/17

Mail

  • mail server
    • 메일 송신 SMTP (메일 서버와 메일 서버 간의 통신) 25/tcp
    • 메일 수신 POP3,IMAP (서버와 클라이언트 수신) 110 , 143
      • pop3 와 IMAP 의 차이점
        • pop3 는 클라이언트에 저장되면 서버에서 내용 삭제
        • IMAP 중앙 서버에서 메일 내용 동기화
    • 리눅스 메일 서버
      • 기본 메일 서버 : POSTFIX (다른 메일 서버 사용 시 삭제)
      • 메일 저장함: /var/spool/mail/계정명
  • 메일 관련 프로그램
    • MTA(Mail Transfer Agent)
      • 전자 메일을 다른 곳으로 전송하는 서버 프로그램
    • MUA(mail User Agent)
      • 전자메일을 사용자에게 할당하는 클라이언트 프로그램
    • MDA(Mail Delivery Agent)
      • MTA가 수신한 메세지를 시간에 맞게 사용자 우편한테 쓰기 위한 프로그램
    • MRA(mail Reterieval Agent)
      • 리모트 서버에 있는 우편함으로부터 사용자의 MUA로 메일을 가져오는 프로그램
    • 메일 access 상태

      RELAY 신뢰(Forward) → disconnect 등 정책 설정 가능./ 주로 사용
      OK 무조건 허용
      DISCARD 응답x 거부
      REJECT 응답이 있는 거부

postfix

yum install mailx
yum install dovecot (메일 수신 서버 다운)
server dovecot restart (수신 서버 시작)
systemctl enable devecot
service postfix restart (송신 서버 시작)
netstat -lntup |grep dove (포트확인)
system-config-firewall (방화벽처리)
service postfix restart (송신서버 시작)
netstat -lntup |grep master (포트확인)

방화벽 처리
firewall-cmd --permanent --add-port 110/tcp
firewall-cmd --permanent --add-port 25/tcp
firewall-cmd --reload

최초에는 127.0.0.1:25 기때문에 로컬에서 밖에 수신이 불가하다

  • 파일 설정
  • /etc/dovecot/conf.d/10-auth.conf (암호화 설정 비활성)
    disable_plaintext_auth = no
  • /etc/dovecot/conf.d/10-ssl.conf (SSL 비활성 설정)
    ssl = no
  • /etc/dovecot/conf.d/10-mail.conf (메일함설정)
    mail_location = mbox:~/mail:INBOX=/var/mail/%u
  • vi /etc/postfix/main.cf (바꿀 내용 /치면서 검색 )
             myhostname = mail.sevas10.com	메일서버 호스트등록
              mydomain = sevas10.com			메일서버 도메인
              myorigin = $mydomain			송신자 메일주소
              inet_interfaces = all			서비스할 인터페이스
              mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain   수신 받을 도메인
              mynetworks = 0.0.0.0/0			신뢰 할수 있는 네트워크 주소
              relay_domains = $mydestination		신뢰 할수 있는 도메인 주소
              mail_spool_directory = /var/spool/mail		메일함 저장 위치
              smtpd_client_restrictions = check_client_access hash:/etc/postfix/access    	access list 사용을 위해 추가
              
  • access 설정
        vi /etc/mail/access
        sevas10.com                             RELAY
        10.10.10.254                            RELAY
        20.20.20.254                            RELAY
        10.10.10.10                             RELAY
        

makemap hash access < access

  • DNS내용
    - korea10.zone
         $TTL 3H
          @       IN SOA  ns.korea10.com.         root.korea10.com.  (
          												0       ; serial
          												1D      ; refresh
          												1H      ; retry
          												1W      ; expire
          												3H )    ; minimum
          	      IN      NS      ns.korea10.com.
          		  IN      A       10.10.10.10
          		  IN      MX 15   mail.korea10.com.
          				
          ns      IN      A       20.20.20.20
          mail    IN      A       20.20.20.20
          
  • sevas10.zone
         $TTL 3H
          @       IN SOA  ns.sevas10.com.         root.sevas10.com.  (
          												0       ; serial
          												1D      ; refresh
          												1H      ; retry
          												1W      ; expire
          												3H )    ; minimum
          		  IN      NS      ns.sevas10.com.
          		  IN      A       10.10.10.10
          		  IN      MX 10   mail.sevas10.com.
          				
          ns      IN      A       10.10.10.10
          www     IN      A       10.10.10.10
          db      IN      A       20.20.20.20
          mail    IN      A       10.10.10.10
         
          
  • nslookup

set type=MX
sevas10.com
Server: 10.10.10.10
Address: 10.10.10.10#53
sevas10.com mail exchanger = 10 mail.sevas10.com.
korea10.com
Server: 10.10.10.10
Address: 10.10.10.10#53
korea10.com mail exchanger = 15 mail.korea10.com.

꼭 메일 익스체인저 확인할것

  • 결과 확인
    [root@localhost ~]# netstat -lntup |grep master
    tcp 0 0 0.0.0.0:25 0.0.0.0: LISTEN 11072/master
    tcp6 0 0 :::25 :::
    LISTEN 11072/master
    - 내용 적용 makemap hash access < access
      ---
      

sendmail

  • 패키지 → rpm -e postfix(메일 충돌 이유로 삭제)
    dovecot (메일 수신 패키지) (yum install dovecot)
    sendmail (메일 서버 패키지) (yum install sendmail*)

  • 설정 파일 수정

  • vi /etc/dovecot/dovecot.conf

              #protocols = imap pop3 lmtp
              protocols = imap pop3 lmtp
              
              #listen = *, ::
              listen = *, ::
              
              /etc/dovecot/conf.d/10-auth.conf  (암호화 설정 비활성)
              disable_plaintext_auth = no
              
              /etc/dovecot/conf.d/10-ssl.conf (SSL 비활성 설정)
              ssl = no
              :
              /etc/dovecot/conf.d/10-mail.conf (메일함설정)
              mail_location = mbox:~/mail:INBOX=/var/mail/%u
              
  • vi /etc/mail/sendmail.mc

              dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl	(원본)
              dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl	(원본)
              TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl	(수정)
              define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl	(수정)
              
              TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl	
              define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
              
              mail 호스트설정 (125)
              dnl #DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl	(원본)
              DAEMON_OPTIONS(`Port=smtp,Name=MTA')dnl	(수정)
              
              도메인등록(169)
              dnl MASQUERADE_AS(`mydomain.com')dnl	(원본)
              MASQUERADE_AS(`sevas.com')dnl	(수정)
              
              도메인 연결
              dnl FEATURE(masquerade_envelope)dnl	(원본)
              FEATURE(masquerade_envelope)dnl	(수정)
              
              
              
  • 저장한 내용 변환 m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

  • vi /etc/mail/sendmail.cf
    - Cwsevas10.com

Cw : 호스트 지정. 요즘은 여러 도메인을 사용하는 경우가 많아 Fw가 주로 쓰임
Fw : 도메인마다 별도의 파일을 지정
Dj : 특정 도메인으로 강제로 연결

  • vi local-host-names
    - mail.sevas.com → 지정 도메인 내용 추가
    - netstat -lntup |grep send
    - netstat -lntup |grep dovecot
  • vi /etc/postfix/access
          [aol.com](http://aol.com/)     REJECT
          [yahoo.com](http://yahoo.com/)   REJECT
          [msn.com](http://msn.com/)     REJECT
          자신의 서버 주소 OK
          

이후 postmap access

  • DNS설정
  • vi sevas.sh
              S=service
              case $1 in
              
              start)
              echo " 메일 서버 start"
              $S sendmail start
              $S saslauthd start
              $S dovecot start
              ;;
              
              stop)
              echo " 메일 서버 stop"
              $S sendmail stop
              $S saslauthd stop
              $S dovecot stop
              ;;
              
              restart)
              sh $0 stop
              sleep 5
              sh $0 start
              ;;
              
              *)
              echo "start/stop/restart"
              exit 0
              esac
              
  • chmod 755 sevas.sh
  • ./sevas.sh
  • ./sevas.sh start
  • 실행 시 작동

Redirecting to /bin/systemctl start sendmail.service
Redirecting to /bin/systemctl start saslauthd.service
Redirecting to /bin/systemctl start dovecot.service

  • /etc/rc.d/init.d/saslauthd restart (SMTP인증 데몬)
    /etc/rc.d/init.d/dovecot restart (메일수신 데몬)
    /etc/rc.d/init.d/sendmail restat (메일서버 데몬)
  • 호스트 네임 설정 hostnamectl set-hostname sevas10.com
  • 내용 적용 postmap access

  • 메일 보내는 방법

    mail root@sevas10.com

    mail [상대방메일주소]
    subject : [제목쓰기][내용쓰기]
    . <<<종료

  • 메일 확인하는 방법

      > mail
      번호         선택
      h             메일 정보 확인
      d  [번호]   메일 삭제
      q             나가기
      > 
  • alias 설정 (단체 메일)

    • vi /etc/aliases
      # Person who should get root's mail
      #root:          marc
      linux:          sevas,korea
      
      
    • 적용 newaliases
  • 가상 메일

    메일이 변경될 때 등.. 사용

    /etc/mail/virtusertable

      [1차 메일도착(수신안함)]     [2차 목적메일 (수신)]
      root@sevas10.com	      sevas@korea10.com
          

    makemap hash virtusertable < virtusertable

    makemap hash access < access

profile
:) GITHUB: https://github.com/YJ2123412

0개의 댓글