この記事は3年以上前に書かれた記事で内容が古い可能性があります
Linuxで一番シンプルにメールを送受信する(postfix on Ubuntu)
2020-05-16
認証とかDNSサーバとかは考えずに、ただただLinux(CLI)でメールを送受信してみたい、という簡単手順
全体概要は以下の通り
Virtualbox上にVagrantを使ってUbuntu14(14.04.5 LTS)サーバを二つたて、相互にメールを送受信する
(VMは必ずしもVagrantで作らなくても良い)

VMの設定
送信側も受信側も同じ設定だが、わかりやすいように送信側を「smtpSv」、受信側を「smtpCt」というVM名とする
以下手順をそれぞれのVMに対して設定する
(下準備)VagrantでVM作成
Vagrantfileの中身は以下の通り
※”smtpSv”はサーバによって名前を変える
Vagrant.configure( "2" ) do |config| |
config.vm.box = "ubuntu/trusty64" |
config.vm.define "smtpSv" do |server| |
server.vm.network "private_network" , ip: "192.168.33.100" |
VM起動
VMへログイン
hostnameファイルとhostsファイル編集
ホスト名を設定
※「smtpSv.example.com」はサーバによって名前を変える
今回はDNSサーバを使わずにローカルのhostsファイルを見てメールを送る前提なのでhostsファイルに直接記載設定する
192.168.33.100 smtpSv.example.com |
192.168.33.101 smtpCt.example.com |
設定反映のためにリブートする
再びログイン
postfixのインストールと設定
postfixをインストール
途中で「Please select the mail server configuration type that best meets your needs.」と出てきたら、今回は一番シンプルに行くので「No configuration」を選択

設定ファイルを適切な場所に持ってくる
中身を編集
※「myhostname = smtpSv.example.com」はサーバによって名前を変える
「smtp_host_lookup = native」は、DNSではなくhostsファイルを見に行ってね(そこになければDNS)という意味
> myhostname = smtpSv.example.com |
> mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain |
> local_recipient_maps = unix: passwd .byname $alias_maps |
& lt ; mynetworks = 127.0.0.0/8 |
> mynetworks = 127.0.0.0/8, 192.168.33.0/24 |
> alias_maps = hash :/etc/aliases |
> alias_database = hash :/etc/aliases |
> home_mailbox = Maildir/ |
& lt ; smtpd_banner = $myhostname ESMTP $mail_name (@@DISTRO@@) |
> smtpd_banner = $myhostname ESMTP |
> sendmail_path = /usr/sbin/postfix |
> newaliases_path = /usr/bin/newaliases |
> mailq_path = /usr/bin/mailq |
> setgid_group = postdrop |
> smtp_host_lookup = native |
設定を反映させて完了
* Stopping Postfix Mail Transport Agent postfix [ OK ] |
* Starting Postfix Mail Transport Agent postfix [ OK ] |
もう一つのサーバについても同様に設定をする
動作確認
設定が完了したので動作確認
送信側のVMでメールを送信する
最後に「.」とEnterを押せばメールが送信される
(/var/log/mail.logや/var/log/syslogにログは出力される)
※今回は「smtpCt」サーバ、「example.com」ドメインの、「vagrant」というユーザーあてに送信。環境によって適宜変更ください)
※送信側のVM(smtpSv)で操作
受信側のサーバでメールが受信できていることを確認
先ほど宛先に指定したユーザーのホームディレクトリ(/home/vagrant)に移動すると
Maildir/new/配下に新しくファイルができているので中身を確認する
※ファイル名は状況によって異なります
※受信側のVM(smtpCt)で操作
Return-Path: <root@example.com> |
X-Original-To: vagrant@smtpCt.example.com |
Delivered-To: vagrant@smtpCt.example.com |
Received: from smtpSv.example.com (smtpSv [192.168.33.100]) |
by smtpCt.example.com (Postfix) with ESMTP id CF845400C4 |
for <vagrant@smtpCt.example.com>; Sat, 16 May 2020 05:19:09 +0000 (UTC) |
Received: by smtpSv.example.com (Postfix, from userid 0) |
id 62381400C4; Sat, 16 May 2020 05:19:09 +0000 (UTC) |
Message-Id: <20200516051909.62381400C4@smtpSv.example.com> |
Date: Sat, 16 May 2020 05:18:55 +0000 (UTC) |
From: root@example.com (root) |
以上。