Debian Lenny に sendmailを導入する
※とりあえず動かすには、ローカル配送(procmail)の設定がポイントです。
■sendmailのインストール
$ sudo apt-get install sendmail-bin
■デーモンの稼動チェック
$ ps -ef | grep sendmail | grep MTA | cut -c 49-
sendmail: MTA: accepting connections
■リッスンポートを確認。とりあえずlocalhostで繋がりそうです。
$ netstat -an | grep \:25
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
$ netstat -a | grep \:smtp
tcp 0 0 localhost:smtp *:* LISTEN
■自分宛てにテストメール
$ telnet localhost 25
ehlo localhost
mail from:labunix@vm-mldebian.labunix.net
rcpt to:labunix@vm-mldebian.labunix.net
data
From:labunix
Subject: mail from labunix
To: labunix
Sun Sep 18 19:29:44 JST 2011
.
quit
■sendmailサーバの応答箇所の確認
250-vm-mldebian.labunix.net Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-DELIVERBY
250 HELP
■syslog、maillogの確認
※ローカル配送も出来ていません。
$ sudo grep stat= /var/log/syslog | awk -F\, '{print $8}' | sort | uniq
stat=Operating system error
■procmailが無いかPATHが通っていないエラーについて
※procmail自体は導入されていることを確認
参考:http://www.turbolinux.com/support/document/knowledge/296.html
$ dpkg -l procmail | grep ^i
ii procmail 3.22-16 Versatile e-mail processor
$ whereis procmail
procmail: /usr/bin/procmail /usr/share/man/man1/procmail.1.gz
■dovecotを導入
$ sudo apt-get install dovecot-common dovecot-pop3d dovecot-imapd
■popのリッスンポートの確認
$ netstat -an | grep "\:110\|\:995"
tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN
$ netstat -a | grep "\:pop"
tcp 0 0 *:pop3s *:* LISTEN
tcp 0 0 *:pop3 *:* LISTEN
■imapのリッスンポートの確認
$ netstat -a | grep "\:imap"
tcp 0 0 *:imaps *:* LISTEN
tcp 0 0 *:imap2 *:* LISTEN
$ netstat -an | grep "\:143\|\:993"
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN
■pop3から受信チェック
※telnetから発信したメールは届いてません。
$ telnet localhost 110
user labunix
pass XXXXXXXX
list
retr 1
〜省略〜
Auto-Submitted: auto-generated
Subject: *** SECURITY information for vm-mldebian.labunix.net ***
From: labunix
Message-Id:
Date: Sun, 18 Sep 2011 19:03:09 +0900
vm-mldebian.labunix.net : 9月 18 19:03:08 : labunix : user NOT in sudoers ; TTY=tty1 ; PWD=/home/labunix ; USER=root ; COMMAND=/etc/init.d/ssh restart
.
〜メール本文終わり〜
quit
■procmailに関するsendmail.mc の編集
$ sudo cp -pi /etc/mail/sendmail.mc /etc/mail/sendmail.mc.org
$ sudo vim /etc/mail/sendmail.mc
$ sudo grep procmail /etc/mail/sendmail.mc
FEATURE(`local_procmail',`/usr/bin/procmail')dnl
MAILER(`procmail')dnl
■メールキューの確認
$ mailq | head -5
MSP Queue status...
/var/spool/mqueue-client is empty
Total requests: 0
MTA Queue status...
/var/spool/mqueue (2 requests)
■sendmailの再起動を行い設定を反映させる
$ sudo /etc/init.d/sendmail restart
■配送が出来ている事を確認
$ mailq
MSP Queue status...
/var/spool/mqueue-client is empty
Total requests: 0
You have new mail in /var/mail/labunix
$ sudo tail -f /var/log/syslog | grep stat= | awk -F\, '{print $8}'
stat=Sent
■メールクライアントのインストール
$ dpkg -l mailx
要望=(U)不明/(I)インストール/(R)削除/(P)完全削除/(H)維持
| 状態=(N)無/(I)インストール済/(C)設定/(U)展開/(F)設定失敗/(H)半インストール/(W)トリガ待ち/(T)トリガ保留
|/ エラー?=(空欄)無/(H)維持/(R)要再インストール/X=両方(状態,エラーの大文字=異常)
||/ 名前 バージョ 説明
+++-==============-==============-============================================
un mailx <なし> (説明 (description) がありません)
$ dpkg -l mailutils
要望=(U)不明/(I)インストール/(R)削除/(P)完全削除/(H)維持
| 状態=(N)無/(I)インストール済/(C)設定/(U)展開/(F)設定失敗/(H)半インストール/(W)トリガ待ち/(T)トリガ保留
|/ エラー?=(空欄)無/(H)維持/(R)要再インストール/X=両方(状態,エラーの大文字=異常)
||/ 名前 バージョ 説明
+++-==============-==============-============================================
un mailutils <なし> (説明 (description) がありません)
$ sudo apt-get install mailx mailutils
■コマンドからの受信メール確認
$ mail
■まとめ
デフォルトの最低限動くだけの設定ですので、DMZ内で試すレベルですのでご注意を。
・procmailの引数の設定は行ってません。
・smtpはlocalhostしかリッスンしていません。
■追記1
m4を実行したところ、MAILERの前にFEATUREを書くようにというメッセージが出たため、
その通りに順序を変更。
ついでにprocmailの引数も設定。
$ sudo /etc/init.d/sendmail reload
Reloading Mail Transport Agent (MTA): sendmail.
labunix@vm-mldebian:~$ sudo tail -12 /etc/mail/sendmail.mc dnl # Masquerading options
FEATURE(`always_add_domain')dnl
MASQUERADE_AS(`vm-mldebian.labunix.net')dnl
FEATURE(`allmasquerade')dnl
FEATURE(`masquerade_envelope')dnl
FEATURE(`local_procmail',`/usr/bin/procmail')dnl
FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')dnl
MAILER_DEFINITIONS
MAILER(`local')dnl
MAILER(`smtp')dnl
MAILER(`procmail')dnl
$ su root -c 'm4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf'
■追記2
すべてのIPをリッスンするにはPort=smtpとsubmissionをコメントアウトするだけでした。
$ grep 127.0.0.1 /etc/mail/sendmail.mc
dnl DAEMON_OPTIONS(`Family=inet, Name=MTA-v4, Port=smtp, Addr=127.0.0.1')dnl
dnl DAEMON_OPTIONS(`Family=inet, Name=MSP-v4, Port=submission, M=Ea, Addr=127.0.0.1')dnl
$ su root -c 'm4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf'
$ sudo /etc/init.d/sendmail reload
$ sudo /etc/init.d/sendmail status
MSP: is run via cron (20m)
MTA: 11643 /usr/sbin/sendmail-mta -Am -L sm-mta -bd -q10m
UID PID PPID C STIME TTY TIME CMD
root 11643 1 0 23:07 ? 00:00:00 sendmail: MTA: accepting connections
Daemon Status: (process 11643) Accepting connections
Current number of children: 0
QueueDir free disk space (in blocks): 29088004
Load average: 0
Child Process 11691 Status: console socket child
QUE: Same as MTA
$ netstat -an | grep ":25"
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
■追記
postfixからsendmailに入れ替えた際、bsd-mailxがコマンドメーラとしてインストール済みでした。
mailutilsも依存関係で一緒にインストールされます。
$ apt-get install bsd-mailx