Twitterに投稿 はてなブックマークに追加 Yahoo!ブックマークに追加 Google Bookmarksに追加

目次 >> メール

メールサーバの設定 - postfix & dovecot

ここでは、postfixとdovecotを使用して、Unixユーザーアカウントを利用したメールサーバを構築する方法を示す。この方法では、バーチャルドメインを使用していない場合、もっとも一般的な方法である。

バーチャルドメインを利用している場合、違うドメイン名で、同じユーザー名が使えないなどいろいろと不便なことが多いので、その場合は、バーチャルメールボックスを使用する。バーチャルメールボックスを使用した設定についてはここを参照のこと。

なお、DNSで、MXレコードが設定されていない場合は、たいていの場合Aレコードを利用してメールが送られるが、サーバによってはMXレコードが設定されていないと、送らない場合があるので(例えばsendmailでAレコードを使わないに設定した場合など)、必ずMXレコードは設定しておくこと。DNSの設定に関してはこちらのページを参照。

セキュリティについて

POP3に関しては、TLSを、SMTPに関しては、TLS+SMTP Authを利用するのがもっとも望ましい。この場合、APOPは不要である。しかしながら、TLSが未だ使えない環境の場合も多い。その場合は、POP3はAPOPをSMTPはSMTP Authで運用するようにする。SMTP Authが使えないというような場合は、POP before SMTPを使うことになるが、できるだけ避けるべきである。

インストール

postfixおよび、dovecotはFedoraの標準のSMTP、POP3、IMAPサーバである。yumから簡単にインストールすることができる。また、openSUSE 10.0の場合、postfixは標準であるが、dovecotは標準では入っていないので、yastを使ってインストールする。ubuntuの場合も、apt-getで簡単にインストールできる。

以下はFC5におけるyumでのインストール例である。

postfixのインストール

# yum install postfix
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories
core [1/3]
updates [2/3]
extras [3/3]
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for postfix to pack into transaction set.
postfix-2.2.8-1.2.x86_64. 100% |=========================| 44 kB 00:06
---> Package postfix.x86_64 2:2.2.8-1.2 set to be updated
--> Running transaction check

Dependencies Resolved

=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
postfix x86_64 2:2.2.8-1.2 core 3.5 M

Transaction Summary
=============================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 3.5 M
Is this ok [y/N]: y
Downloading Packages:
(1/1): postfix-2.2.8-1.2. 100% |=========================| 3.5 MB 06:41
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: postfix ######################### [1/1]

Installed: postfix.x86_64 2:2.2.8-1.2
Complete!

dovecotのインストール

# yum install dovecot
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories
core [1/3]
core 100% |=========================| 1.1 kB 00:00
updates [2/3]
updates 100% |=========================| 951 B 00:00
extras [3/3]
extras 100% |=========================| 1.1 kB 00:00
Reading repository metadata in from local files
primary.xml.gz 100% |=========================| 765 kB 00:00
extras : ################################################## 2163/2163
Added 34 new packages, deleted 246 old in 1.99 seconds
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for dovecot to pack into transaction set.
dovecot-1.0-0.beta2.7.x86 100% |=========================| 24 kB 00:00
---> Package dovecot.x86_64 0:1.0-0.beta2.7 set to be updated
--> Running transaction check

Dependencies Resolved

=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
dovecot x86_64 1.0-0.beta2.7 core 1.1 M

Transaction Summary
=============================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 1.1 M
Is this ok [y/N]: y
Downloading Packages:
(1/1): dovecot-1.0-0.beta 100% |=========================| 1.1 MB 00:00
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: dovecot ######################### [1/1]

Installed: dovecot.x86_64 0:1.0-0.beta2.7
Complete!

起動、停止、再読み込み

もし、sendmailが起動している場合は、

# /etc/init.d/sendmail stop

と打ち、sendmailを停止しておく。

起動、停止は

# postfix start
# postfix stop

再起動ではなく、設定の再読み込みでおこなう。

# postfix reload

なお、初めての起動時や設定を変えたりした場合は念のため下記のホームページで第三者中継を拒否するかどうかを確認しておくこと。

第三者中継の設定の確認:いくつかあるが、例えばhttp://www.rbl.jp/svcheck.php

システム起動時に、自動的に起動するように、

# chkconfig postfix on

と打っておく。また、下記のように自動起動の方も停止しておく。

# chkconfig sendmail off

Postfixの設定

Postfixの主要な設定は

/etc/postfix/main.cf

で行う。また、いくつかのpostfixの動作に関しては、

/etc/postfix/master.cf

もいじる必要がある。

postfixで設定を行う際の注意点(非常に重要)

Linuxの設定ファイルはデーモン(サーバ)ごとに少しずつ違うが、特にPostfixは、Linuxの他の設定ファイルに比べて注意が必要である。

#で始まる行はコメント行であるが、#を途中からはじめることはできない。すなわち、下記のような書き方は、認められない。

myhostname = foo.example.com #コメントほげほげ

また、"や'で括ったり、行末に;を付けることもしてはいけない。下記のような書き方は誤りである。

myhostname = "foo.example.com"
myhostname = 'foo.example.com'
myhostname = foo.example.com;

全般の設定

ここでは、どのような形の運用の場合でも必要な設定について述べる。以下、特に記述がない場合はmain.cf内に書く。

実は、Postfixはたいていの場合、デフォルトのままでも動くことが多い。ただし、その場合は、Postfixの動いている端末からしかメールを送れない。また、その場合でも、最低限下記の設定は行うべきである。

ドメイン名とホスト名の設定は、main.cfで設定されていない場合、自動的にLinuxの設定から取得されるが、main.cfでも念のため設定しておく。ドメイン名が違っていたりすると、送信されてきたメールがリレーメールとみなされたりして、拒否されてしまう。

myhostname = foo.example.com
mydomain = example.com

FedoraおよびMac OS X 10.4では、デフォルトで

inet_interfaces = localhost

となっていた。また、openSUSE 10をセットアップしたときも、セットアップした状態によっては、ローカルホストのみに限定されていた。これだと、外部から接続できないので

inet_interfaces = all

に書き換える。これは、接続できなくてもログに記録されないので、時々はまることがある。

存在しないユーザー宛のメールは550か450のエラーコードが返される。存在しないと単に拒否する場合は

unknown_local_recipient_reject_code = 550

postfixを導入したばかりで、設定に不安のある場合は、後で再度送信を試みてもらうように

unknown_local_recipient_reject_code = 450

とする。

メールの最大サイズはmessage_size_limitで設定する。単位はバイトである。下記の場合は、100MBに設定している。何も指定しない場合、デフォルト値は10240000バイト、すなわち10MBである。仮に、自分のサーバに大きな値を設定しても、相手がそれ以下の場合はメールは送信できない。また、あまりに巨大なファイルをメールで送ることは望ましくないので、現状の通信環境などを考慮すると10Mあたりが適当である。BIGLOBEなどでは1通あたり100MBまで許容しているので、100MBで設定しておいてもよいが、それでも、そのように大きなファイルを送信することは望ましいことではない。

message_size_limit = 102400000

delay_warning_timeを指定すると、指定時間以内に配送できない場合は送信者に通知が行く。デフォルトでは0が指定してあり、通知は行われない。下記の場合は12時間以内に遅れなかった場合に通知が行く。

delay_warning_time=12h

SMTP認証を使用する

もし、メールクライアントがSMTP認証に対応しているなら、POP before SMTPよりもSMTP認証を使うことを勧める。

SMTP認証を有効にするには、smtp_sasl_auth_enableをyesにし、smtpd_recipient_restrictionsにpermit_sasl_authenticatedを加える。

smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

古いOutlookなどでは、標準に準拠していないため、下記の設定を行わないとエラーとなってしまう。

broken_sasl_auth_clients = yes

Unixユーザーアカウントのアカウント名およびパスワードでSMTP認証を行う場合、saslauthdが起動している必要がある。

まず、

/usr/lib/sasl2/smtpd.conf

64ビット版を使っている場合は

/usr/lib64/sasl2/smtpd.conf

ubuntuの場合は

/etc/postfix/sasl/smtpd.conf

を開いて、

pwcheck_method: saslauthd

となっているか、確認する。

そして、下記のコマンドでsaslauthdを起動する。

/etc/init.d/saslauthd start

パソコン起動時に自動的に起動するように

# chkconfig saslauthd on

としておくとよい。

以上で、Unixユーザーアカウントのアカウント名およびパスワードでSMTP認証できる。

ubuntuでは

なお、ubuntuではあらかじめsasl2-binというパッケージをインストールし、/etc/default/saslauthdというファイル内の

START=no

となっている部分を

START=yes

と書き換える。

それから、ubuntuでは標準では、postfixはchrootを使って起動しているので、saslauthdと通信できるように次のようにタイプする必要がある。

sudo rm -r /var/run/saslauthd/
sudo mkdir -p /var/spool/postfix/var/run/saslauthd
sudo ln -s /var/spool/postfix/var/run/saslauthd /var/run
sudo chgrp sasl /var/spool/postfix/var/run/saslauthd
sudo adduser postfix sasl

また、/etc/shadowを認証に利用している場合は、cram-md5やdigest-md5は使えないので、/etc/postfix/sasl/smtpd.confに

mech_list: plain login

という行を追加する。なお、plain loginを使う場合は必ずTLSを有効にしてパスワードを盗聴されないようにすること。

TLSを使って経路を安全にする

main.cfでTLSの使用を有効にします。

smtpd_use_tls = yes

まずCAを作成する。
openSUSE 10.0の場合は、適当な作業用ディレクトリを作りそこで

# /usr/share/ssl/misc/CA.pl -newca
CA certificate filename (or enter to create)

Making CA certificate ...
Generating a 1024 bit RSA private key
..................................++++++
....++++++
writing new private key to './demoCA/private/cakey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
Verify failure
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:Chiyodaku
Organization Name (eg, company) [Internet Widgits Pty Ltd]:HogeCompany
Organizational Unit Name (eg, section) []:Huga
Common Name (eg, YOUR name) []:boo
Email Address []:foo@example.com

FC4の場合は

# /etc/pki/tls/misc/CA.pl -newca

すると、そのディレクトリにdomeCA以下のディレクトリが作成される。

次にサーバ証明書を作成する。

# openssl req -new -nodes -keyout mailkey.pem -out mailreq.pem -days 3650
Generating a 1024 bit RSA private key
.......++++++
....................++++++
writing new private key to 'mailkey.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:Chiyodaku
Organization Name (eg, company) [Internet Widgits Pty Ltd]:HogeCompany
Organizational Unit Name (eg, section) []:Physics
Common Name (eg, YOUR name) []:boo
Email Address []:foo@example.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

次にこの証明書に署名する。今回は自分で署名する。

# openssl ca -out mail_signed_cert.pem -infiles mailreq.pem
Using configuration from /etc/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number:
af:73:8a:75:84:e0:14:5c
Validity
Not Before: Mar 6 02:31:11 2006 GMT
Not After : Mar 6 02:31:11 2007 GMT
Subject:
countryName = JP
stateOrProvinceName = Tokyo
organizationName = HogeCompany
organizationalUnitName = Huga
commonName = boo
emailAddress = foo@example.com
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
3D:2E:F3:49:A1:D0:39:A1:F8:CF:C1:85:8E:46:24:BE:0E:72:53:F0
X509v3 Authority Key Identifier:
keyid:AD:A9:89:7C:DC:39:D3:19:E8:2A:6D:07:D5:94:AD:CF:17:20:CF:76
DirName:/C=JP/ST=Tokyo/L=Chiyodaku/O=HogeCompany/OU=Huga/CN=boo/emailAddress=foo@example.com
serial:AF:73:8A:75:84:E0:14:5B

Certificate is to be certified until Mar 6 02:31:11 2007 GMT (365 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

そして作成されたファイルをここではpostfixのディレクトリにコピーする

# cp -p mailkey.pem /etc/postfix
# cp -p mail_signed_cert.pem /etc/postfix
# cp -p /demoCA/cacert.pem /etc/postfix

今コピーしたファイルをmain.cfの中で指定してやる。

smtpd_tls_key_file = /etc/postfix/mailkey.pem
smtpd_tls_cert_file = /etc/postfix/mail_signed_cert.pem
smtpd_tls_CAfile = /etc/postfix/cacert.pem

そして、master.cf内の

smtps    inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes

tlsmgr    unix  -       -       n       1000?   1       tlsmgr

の各行のコメントをはずす。

FC4の場合、コメントアウトされている行が

#tlsmgr   fifo  -       -       n       300     1       tlsmgr

であるが、このままコメントアウトをはずしても

ckme postfix/tlsmgr[19400]: fatal: unsupported transport type: fifo

のようなエラーが記録され、クライアントパソコンからも接続できない。どうしてなのかな?

ちなみにFC5では
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
と最初からなっており、エラーは発生しない。

さらに、CA証明書をクライアントパソコンにインストールする。

まず、Linux上で

# openssl x509 -inform pem -in ./demoCA/cacert.pem -outform der -out ./demoCA/ca_example.der

できたca_example.derをクライアントパソコンに移し、インストールする。

dovecotのファイルを使ってお手軽設定(FC5)

FC4やFC5でdovecotをインストールすると

/etc/pki/dovecot/private/dovecot.pem
/etc/pki/dovecot/certs/dovecot.pem

にTLSに必要なファイルがすでにできている。(最新のdovecotではディレクトリの場所が違うので注意)これらをmain.cf内で指定してやれば、上記のような作業は不要である。具体的には、main.cf内に

smtpd_use_tls = yes
smtpd_tls_key_file = /etc/pki/dovecot/private/dovecot.pem
smtpd_tls_cert_file = /etc/pki/dovecot/certs/dovecot.pem

(FC4の場合は)

smtpd_use_tls = yes
smtpd_tls_key_file = /etc/pki/dovecot/private/dovecot.pem
smtpd_tls_cert_file = /etc/pki/dovecot/dovecot.pem

を追加し、master.cf内の

smtps    inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes

tlsmgr    unix  -       -       n       1000?   1       tlsmgr

の各行のコメントをはずし、再起動すれば、postfixでTLSが使えるようになる。

サブミッションポートを用意する

master.cf内の下記の行のコメントを外す。

submission inet n       -       -       -       -       smtpd
  -o smtpd_enforce_tls=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject

OB25B対策

OB25Bがなされていて自サーバから直接送信できない場合は、プロバイダのメールサーバをル要する必要がある。
また、ダイナミックIPの場合、hotmailなどは受け付けない仕様になっているので、この場合もプロバイダなどの固定IPのメールサーバを経由する必要がある。なお、ダイナミックIPでのメールサーバの運用は基本的に推奨されない。

まず、main.cfに

relayhost = プロバイダのメールサーバ

を記述する。次に、現在のたいていのプロバイダではSMTP AUTHで認証してから送る形式になっている場合が多いが、その場合は下記を追加する。

smtp_sasl_auth_enable=yes
smtp_sasl_password_maps = hash:/etc/postfix/outgoingsmtpauth
smtp_sasl_security_options=noanonymous

次に、/etc/postfix/ディレクトリにoutgoingsmtpauthというファイルを新規作成し、エディタで

SMTPサーバー名 ユーザー名:パスワード

と記入したテキストファイルを作成する。なお、このファイルにはパスワードが直接書かれているので、

#chmod 640 /etc/postfix/outgoingsmtpauth

としておく。最後に

#postmap outgoingsmtpauth

として、postfix用のデータベースに変換して、postfixをreloadすればよい。

Dovecotの設定

Dovecotの設定は、postfixに比べるとはるかに簡単である。(ただし、仕様がまだ固まっていないようで、バージョンによって設定方法がかなり違うので注意。)

Fedoraの場合は

/etc/dovecot.conf

openSUSE 10.0の場合は、

/etc/dovecot/dovecot.conf

で全体の設定を行う。

dovecotは、Unixアカウントを使う場合、インストールした状態のデフォルトのままでほぼ動く。
ubuntu7.10では、プレーンテキスト認証はデフォルトではオフになっているので、メールクライアント側でSSLをオンにする必要がある。

openSUSE 10.0では、証明書が用意されていない場合、TLS関係で起動時にエラーが出るので、TLSをオフにする。

ssl_disable = yes

Dovecotの起動、停止

起動は

# /etc/init.d/dovecot start

停止は

# /etc/init.d/dovecot stop

コンピュータの起動時に自動起動するように設定するには、

# chkconfig dovecot on

TLSを使用する

DovecotではデフォルトでTLSが使用可能になっている。APOPを使用しても本文は暗号化されないので、メールソフトが対応しているならばTLSの使用を勧める。

TLSを使用可能にするには、下記の設定をする。

ssl_disable = no

FC4、FC5の場合は、証明書の正当性さえ気にしなければ、そのまま使える。openSUSE 10.0の場合は証明書がないので、postfixの項を参考にして、証明書を作成する必要がる。FC4の場合も証明書の検証でひっかからないようにするためには必要である。

ここではpostfixで作成した物をそのまま流用するとして、dovecot.confに下記のように書く。

ssl_key_file = /etc/postfix/mailkey.pem
ssl_cert_file = /etc/postfix/mail_signed_cert.pem

下記のパラメータはバージョン0.99ではサポートされていないようだ。

#ssl_ca_file = /etc/postfix/cacert.pem
#ssl_verify_client_cert = no

もし、TLSを使った接続以外を受け付けないようにしたいのなら

protocols = imap imaps pop3 pop3s

protocols = imaps pop3s

に書き換える。

クライアントからサーバがdovecotであることを隠す

メールクライアントソフトが、dovecotサーバに接続すると、最初に

+OK dovecot ready.

の様なメッセージが出るが、セキュリティを高めるために、これを消したい場合がある。これは、設定ファイルの中で、

login_greeting = POP3 ready.

のように書くことによって、変更することが出来る。

なおこれは、dovecotのバージョンが1以上で可。

APOPを使う

クライアントソフトが対応していないなどの理由で、TLSが使用できない場合、次善の策として、APOPを使用する。

dovecot.confのauth default内のmechanismsにapopを加える。

auth default {
  mechanisms = plain apop

   ....

}

なおこれは、dovecotのバージョンが1以上で可。

LDAPでユーザー管理をする

(現在、作成中)

postfixとLDAP

(現在、作成中)

まず、postfixとLDAPを連携する方法であるが、psotfixがLDAPをサポートしているか下記のコマンドを打ち込んで調べる。

# postconf -m
btree
cidr
environ
hash
ldap
nis
pcre
proxy
regexp
sdbm
static
tcp
unix

このように、出力の中にldapが含まれていれば、サポートされている。

DovecotとLDAP

(現在、作成中)

つぎに、DovecotとLDAPを連携する方法であるが、

複数のMXを設定して、バックアップサーバを設定する

DNSで複数のMX値を設定すると、優先度の高い(MX値の小さい)サーバがダウンした際に、別のサーバ(MX値の大きい)サーバに配送し、サーバが復旧した後に、そのサーバへ転送するようにすることができる。
これにより、サーバがダウンした際に、メールが配送不能エラーで相手に返っていくことを極力防ぐことができる。

MXの一番小さいサーバに関しては、MXが1しかない場合と同様に設定しておく。

次にバックアップサーバすなわちMXの大きなサーバであるが、リレーを設定すればとりあえず使える。

relay_domains = example.com

しかしながら、セキュリティを考慮すると、単にリレーするだけではだめである。
バックアップサーバも有効なユーザ名を把握している必要がある。理由は、スパム。すべてのユーザー名を受け入れてしまうと、存在しないユーザーが大量に存在するスパムを受け取った場合、大量のエラーメールが、送信者とされた人(たいていは偽物)のところへ行くことになる。そこで、次のように設定する。

次の行のコメントを外す。

relay_recipient_maps = hash:/etc/postfix/relay_recipients

/etc/postfix/relay_recipientsというファイル(テキストファイル)にリレーするユーザー名を書いていく。具体的には

foo@example.com dummy

dummyのところは何でも良いが、何かを書かなければならない。

そして、

# postmap /etc/postfix/relay_recipients

と打つ。これでpostfixを再起動する。

トラブルシューティング

anvilに関する警告

ログファイル内に次のような警告が出る場合は、anvil行がmaster.cfに書いていない可能性がある。

May  9 16:15:50 ckme postfix/smtpd[10707]: warning: connect to private/anvil: Connection refused
May  9 16:15:50 ckme postfix/smtpd[10707]: warning: problem talking to server private/anvil: Connection refused
May  9 16:15:51 ckme postfix/smtpd[10707]: warning: connect to private/anvil: Connection refused
May  9 16:15:51 ckme postfix/smtpd[10707]: warning: problem talking to server private/anvil: Connection refused

master.cfに次の行を加える

anvil     unix  -       -       n       -       1       anvil

qmgrに関する警告

ログファイル内の次のような警告は、qmgrに新しいものを使ってくれと警告している。

May  9 16:29:56 ckme postfix/nqmgr[10996]: warning: please update the /etc/postfix/master.cf file; the new queue manager
May  9 16:29:56 ckme postfix/nqmgr[10996]: warning: (old name: nqmgr) has become the standard queue manager (new name: qmgr)
May  9 16:29:56 ckme postfix/nqmgr[10996]: warning: support for the name old name (nqmgr) will be removed from Postfix

master.cfに書いてあるnqmgrをqmgrに書き換える。

qmgr     fifo  n       -       n       300     1       nqmgr

qmgr      fifo  n       -       n       300     1       qmgr

にする。

(おまけ)telnetでメールを送信する

telnetを使って、直接コマンドをたたいてメールを送信する方法を示す。

赤い太字が入力するコマンド、白い太字部分はそれぞれ書き換えてください。以下はfoo@exapmle.comからboo@example.net宛てに"hogehoge"という内容のメールを送信する例。

$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 example.com ESMTP Postfix
HELO example.com
250 example.com
MAIL FROM:foo@example.com
250 Ok
RCPT TO:boo@example.net
250 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
hogehoge
.

250 Ok: queued as 76694DCCE
quit
221 Bye
Connection closed by foreign host.

sshトンネルを作成してメールを送信する(こんな方法でも)

postfixのデフォルトの設定では、localhostからしかメールを送ることができない。これを解除するには、ひとつはIPアドレスを指定する方法、もうひとつはSMTP認証などの認証を使う方法がある。

ここでは、sshでサーバに接続し、トンネルを作成して送信する方法を記述する。この方法では、経路はTLSを使ったときと同様すべて暗号化される。その一方で、sshを起動してトンネルを作成する必要があるのが欠点である。

sshがインストールしてあるとして、下記のようにトンネルを作成する。この場合は、ポート番号10000を指定したが、これは任意の番号を指定してよい。

> ssh -L 10000:localhost:22 user01@example.com

あとは、メールソフトの設定で、SMTPサーバをlocalhostに、ポート番号を10000に指定すると、メールを送信することができる。

受信も同様にしてできるが、通常、受信は外部からでも可能なので、暗号化が必要な場合以外は、sshでトンネルを作成する利点はあまりない。それよりもむしろTLSを使用したほうがよい。

関連項目

リンク

最終更新日


本文中のFC4はFedora ProjectのFedora Core 4を、FC5はFedora Core 5を、FC6はFedora Core 6をopenSUSEはNovellのSUSE Linux OSSを表します。Fedora7以降は、単にFedora7、Fedora8、Fedora9、Fedora10、Fedora11、Fedora12、Fedora13、Fedora14、Fedora15と表示しています。Ubuntuは、必要に応じて17.04、18.04のようにバージョン番号をつけて区別しています。

ここに登場するドメイン名やIPアドレスなどはフィクションです。実在の人物・団体等とは一切関係がありません。
実際に使用する際は、各自の環境に合わせて書き換えてください。
もし何か間違いなどありましたらこちらからご連絡ください
リンクに許可は不要です。
Copyright (C) 2014 Chikuma Engineering Co., Ltd. All Rights Reserved.