시스템(Linux)

SendMail 에 대해 알아보겠습니다.

forward error correction Circle 2023. 5. 2. 08:24
반응형

Ⅰ. Sendmail 이란? 

 리눅스에서 Sendmail은 일반적으로 전자 메일을 보내는 데 사용되는 메일 전송 에이전트(MTA)입니다. Sendmail은 유닉스 및 리눅스 운영 체제에서 가장 일반적으로 사용되는 MTA 중 하나입니다.

Sendmail은 기본적으로 텍스트 기반의 구성 파일을 사용하여 구성됩니다. 이 파일은 일반적으로 /etc/mail/sendmail.cf 또는 /etc/sendmail.cf와 같은 경로에 저장됩니다. Sendmail은 이 구성 파일을 사용하여 메일 전송 구성, 인증 및 보안 구성, DNS 구성 등을 지정합니다.

 

Ⅱ. Senmail 설치 

Sendmail은 Unix 계열 운영체제에서 기본적으로 제공되는 메일 전송 에이전트(MTA) 중 하나입니다. 

현재는 Postfix, Exim 등의 MTA가 더 많이 사용되고 있지만, 일부 서버에서 Sendmail을 사용하고 있습니다.

Sendmail을 설치하려면 우선 운영체제의 패키지 관리자를 사용하거나 소스 코드를 직접 컴파일하여 설치해야 합니다. 각 운영체제의 패키지 관리자를 사용하는 방법은 운영체제에 따라 다릅니다.

 다음과 같은 명령어로 Sendmail을 설치할 수 있습니다.

1) Rocky Linux ( Redhat 계열)

[root@feccle ~]# yum -y install sendmail
Last metadata expiration check: 3:41:06 ago on Mon 01 May 2023 07:18:10 PM KST.
Dependencies resolved.
================================================================================
 Package          Architecture   Version                Repository         Size
================================================================================
Installing:
 sendmail         x86_64         8.15.2-34.el8          appstream         767 k
Installing dependencies:
 procmail         x86_64         3.22-47.el8            appstream         179 k

Transaction Summary
================================================================================
Install  2 Packages

Total download size: 946 k
Installed size: 2.0 M
Downloading Packages:
(1/2): procmail-3.22-47.el8.x86_64.rpm          2.2 MB/s | 179 kB     00:00
(2/2): sendmail-8.15.2-34.el8.x86_64.rpm        5.1 MB/s | 767 kB     00:00
--------------------------------------------------------------------------------
Total                                           1.4 MB/s | 946 kB     00:00
Running transaction check
Transaction check succeeded.

1-1) Rocky Linux ( Redhat 계열) 서비스 등록 및 확인

1. 서비스 시작
[root@feccle ~]# systemctl start sendmail

2. 부팅 시 자동으로 시작 되도록 서비스 등록
[root@feccle ~]# systemctl enable sendmail

3. 서비스 상태 확인
[root@feccle ~]# systemctl status sendmail

2) Debian/Ubuntu 계열

[root@feccle ~]# sudo apt-get install sendmail
1) 서비스 시작
[root@feccle ~]# service sendmail start

[root@feccle ~]# /etc/init.d/sendmail start

2) 서비스 상태 확인
[root@feccle ~]# service sendmail status

 

Ⅲ. Sendmail 구성
Sendmail을 구성하려면 /etc/mail/sendmail.mc 파일을 수정해야 합니다. 이 파일은 Sendmail의 메인 구성 파일로, Sendmail의 동작을 변경하는 데 사용됩니다.

예를 들어, localhost에서만 메일을 수신하고 메일을 외부로 전송할 때 스마트 호스트를 사용하려면 다음과 같이 sendmail.mc 파일을 수정할 수 있습니다.

     26 dnl define(`SMART_HOST', `smtp.your.provider')dnl
     27 dnl #
     28 define(`confDEF_USER_ID', ``8:12'')dnl
     29 dnl define(`confAUTO_REBUILD')dnl
     30 define(`confTO_CONNECT', `1m')dnl
     31 define(`confTRY_NULL_MX_LIST', `True')dnl

    ....

    105 FEATURE(local_procmail, `', `procmail -t -Y -a $h -d $u')dnl
    106 FEATURE(`access_db', `hash -T<TMPF> -o /etc/mail/access.db')dnl
    107 FEATURE(`blacklist_recipients')dnl
    108 EXPOSED_USER(`root')dnl
    109 dnl #
    110 dnl # For using Cyrus-IMAPd as POP3/IMAP server through LMTP delivery un        comment

    ....

    121 DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
    122 dnl #
    123 dnl # The following causes sendmail to additionally listen to port 587 for
    124 dnl # mail from MUAs that authenticate. Roaming users who can't reach their
    125 dnl # preferred sendmail daemon due to port 25 being blocked or redirected find
    126 dnl # this useful.
    127 dnl #
    128 dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl
    129 dnl #
    130 dnl # The following causes sendmail to additionally listen to port 465,but
    131 dnl # starting immediately in TLS mode upon connecting. Port 25 or 587 followed
    132 dnl # by STARTTLS is preferred, but roaming clients using Outlook Express can't
    133 dnl # do STARTTLS on ports other than 25. Mozilla Mail can ONLY use STARTTLS
    134 dnl # and doesn't support the deprecated smtps; Evolution <1.1.1 uses smtps
    135 dnl # when SSL is enabled-- STARTTLS support is available in version 1.1.1.
    136 dnl #
    137 dnl # For this to work your OpenSSL certificates must be configured.
    138 dnl #
    139 dnl DAEMON_OPTIONS(`Port=smtps, Name=TLSMTA, M=s')dnl

위의 예제에서는 "smtp.your.provider"을 스마트 호스트로 지정하고, 메일 전송을 위한 다양한 포트를 설정하고 있습니다.

 

Sendmail을 사용하여 메일을 보내려면 일반적으로 sendmail 명령어를 사용합니다. 예를 들어, 다음과 같이 명령어를 입력할 수 있습니다.

echo "This is a test email" | sendmail -v recipient@example.com
이 명령은 "This is a test email"라는 텍스트를 포함하는 이메일을 reply@feccle.com으로 보냅니다. -v 옵션을 사용하여 보내는 프로세스의 자세한 정보를 표시할 수 있습니다.

[root@feccle ~]# echo "This is a test message." | mail -s "Test Email" reply@feccle.com

Sendmail은 기본적으로 설정되어 있으면 모든 로컬 사용자가 메일을 보낼 수 있습니다. 따라서 시스템 관리자는 보안상의 이유로 Sendmail을 구성하여 스팸 메일 전송을 방지하고 악성 코드를 차단하도록 설정해야 할 수 있습니다.

 

Ⅳ. 주요파일

/etc/mail/local-host-names : 메일 서버에 사용하는 도메인을 설정한다.
/etc/mail/access : 메일 서버로 접근하는 호스트에 대한 접근제어(ACL)를 설정한다.
/etc/mail/virtusertable : 특정 메일주소로 들어오는 메일을 다른 계정으로 포워딩한다.
/etc/aliases : 특정 계정으로 들어오는 메일을 다른 계정으로 전송되도록 설정한다.

 

* virtusertable

리눅스 sendmail 프로그램에서 특정 이메일 주소로 받은 메일을 다른 사용자에게 할당합니다. 다른 여러개의 도메인에서 같은 아이디를 사용하여 메일을 받고자 할 때 사용해야 합니다.

[root@feccle ~]# vi /etc/mail/virtusertable
security@fecc.com alpa
security@ccle.com beta
[메일주소] [받을 유저]
...

내용 수정 후 makemap hash로 적용시켜 줘야 합니다.

[root@feccle ~]# makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable

* makemap은 Sendmail과 같은 메일 전송 에이전트(MTA)에서 사용되는 명령어 중 하나입니다. makemap은 Sendmail의 데이터베이스 매핑 유틸리티로, 일반적으로 Sendmail에서 사용되는 데이터베이스 파일을 생성하고 관리하는 데 사용됩니다.

Sendmail에서는 일반적으로 makemap 명령어를 사용하여 access.db, alias.db, virtusertable.db 등과 같은 데이터베이스 파일을 생성합니다. 이러한 데이터베이스 파일은 Sendmail이 메일 전송을 처리하는 데 필요한 정보를 저장합니다.

makemap 명령어의 일반적인 구문은 다음과 같습니다.

makemap [map-type] [options] database-file < input-file

여기서 [map-type]은 데이터베이스 매핑 유형을 나타내며, 일반적으로 hash, btree, dbm 등이 사용됩니다. [options]는 추가 옵션을 지정하는 데 사용됩니다. database-file은 생성할 데이터베이스 파일의 경로 및 이름을 지정합니다. 마지막으로, < input-file은 데이터베이스 파일에 쓸 데이터를 지정합니다.

예를 들어, 다음과 같은 명령어는 /etc/mail/access 파일에서 데이터를 읽어들여 /etc/mail/access.db 파일을 생성합니다.

makemap hash /etc/mail/access.db < /etc/mail/access

이 명령어는 hash 매핑을 사용하여 /etc/mail/access.db 파일을 생성하고, /etc/mail/access 파일에서 데이터를 읽어들입니다. 이렇게 생성된 데이터베이스 파일은 Sendmail에서 사용되어 메일 전송을 처리하는 데 필요한 정보를 저장합니다.

 

반응형