受信メールのPostfixの設定

この文書では、UbuntuでIMAP認証付きの基本的なPostfixメールサーバーを設定し、受信メールに使用する手順を説明します。

この手順では、メールアドレスincoming@gitlab.example.com 、つまりホストgitlab.example.com のユーザー名incoming を使用していることを前提としています。スニペット例を実行する際には、実際のホストに変更することを忘れないでください。

サーバーのファイアウォールの設定

  1. サーバーのポート25を開放し、SMTPでメールを送信できるようにします。
  2. メールサーバーがGitLabを動かしているサーバーと異なる場合は、GitLabがサーバーからIMAP経由でメールを読めるように、サーバーで143番ポートを開けてください。

パッケージのインストール

  1. postfix パッケージがインストールされていない場合はインストールします:

    sudo apt-get install postfix
    

    環境について尋ねられたら、「Internet Site」を選択してください。ホスト名の確認を求められたら、gitlab.example.com と一致することを確認してください。

  2. mailutils パッケージをインストールします。

    sudo apt-get install mailutils
    

ユーザーを作成します。

  1. メール受信用のユーザーを作成します。

    sudo useradd -m -s /bin/bash incoming
    
  2. このユーザーにパスワードを設定します。

    sudo passwd incoming
    

    後で必要になりますので、忘れないようにしてください。

すぐに使えるセットアップのテスト

  1. ローカルのSMTPサーバーに接続します:

    telnet localhost 25
    

    次のようなプロンプトが表示されます:

    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    220 gitlab.example.com ESMTP Postfix (Ubuntu)
    

    代わりにConnection refused エラーが表示された場合は、postfix が実行されていることを確認してください:

    sudo postfix status
    

    実行されていない場合は、起動してください:

    sudo postfix start
    
  2. SMTPプロンプトに次のように入力して、新しいincoming ユーザーに電子メールを送信し、SMTPをテストします:

    ehlo localhost
    mail from: root@localhost
    rcpt to: incoming@localhost
    data
    Subject: Re: Some issue
       
    Sounds good!
    .
    quit
    
    note
    . は、その行のリテラル・ピリオドです。

    rcpt to: incoming@localhost を入力した後にエラーが表示される場合は、Postfixmy_network の設定が正しくありません。エラーには「Temporary lookup failure」と表示されます。インターネットからメールを受信するためのPostfixの設定_ を参照してください。

  3. incoming ユーザーがメールを受信したかどうかをチェックします:

    su - incoming
    mail
    

    このような出力が表示されるはずです:

    "/var/mail/incoming": 1 message 1 unread
    >U   1 root@localhost                           59/2842  Re: Some issue
    

    メールアプリを終了します:

    q
    
  4. incoming アカウントからサインアウトし、root に戻ります:

    logout
    

PostfixでMaildir形式のメールボックスを使う設定

後で IMAP 認証を追加するためにインストールする Courier では、メールボックスは mbox ではなく Maildir 形式である必要があります。

  1. Maildir 形式のメールボックスを使うように Postfix を設定してください:

    sudo postconf -e "home_mailbox = Maildir/"
    
  2. Postfixを再起動します:

    sudo /etc/init.d/postfix restart
    
  3. 新しい設定をテストします:

    1. のステップ1と2に従ってください。 すぐに使えるセットアップのテスト.
    2. incoming ユーザーがメールを受信したかどうかをチェックします:

      su - incoming
      MAIL=/home/incoming/Maildir
      mail
      

      このような出力が表示されるはずです:

      "/home/incoming/Maildir": 1 message 1 unread
      >U   1 root@localhost                           59/2842  Re: Some issue
      

      メールアプリを終了します:

      q
      

    mail がエラーMaildir: Is a directory を返す場合は、mail のバージョンが Maildir 形式のメールボックスをサポートしていません。sudo apt-get install heirloom-mailxを実行してheirloom-mailx をインストールしてください。その後、heirloom-mailxmail コマンドに置き換えて、上記の手順をもう一度試してください。

  4. incoming アカウントからサインアウトし、root に戻ります:

    logout
    

Courier IMAPサーバーのインストール

  1. courier-imap パッケージをインストールします:

    sudo apt-get install courier-imap
    

    そしてimapd を起動します:

    imapd start
    
  2. インストール後、courier-authdaemon が起動しません。これがないとIMAP認証に失敗します:

    sudo service courier-authdaemon start
    

    起動時にcourier-authdaemon が起動するように設定することもできます:

    sudo systemctl enable courier-authdaemon
    

インターネットからメールを受信するためのPostfixの設定

  1. Postfixにローカルとみなすドメインを知らせます:

    sudo postconf -e "mydestination = gitlab.example.com, localhost.localdomain, localhost"
    
  2. LANの一部とみなすIPをPostfixに知らせます:

    ここでは、192.168.1.0/24 をあなたの内部LANとします。同じローカルネットワークに他のマシンがなければ、このステップは飛ばしても大丈夫です。

    sudo postconf -e "mynetworks = 127.0.0.0/8, 192.168.1.0/24"
    
  3. Postfixがインターネットを含むすべてのインターフェイスでメールを受信できるように設定します:

    sudo postconf -e "inet_interfaces = all"
    
  4. サブアドレスに+ を使うように設定します:

    sudo postconf -e "recipient_delimiter = +"
    
  5. Postfixを再起動します:

    sudo service postfix restart
    

最終セットアップのテスト

  1. 新しいセットアップでSMTPをテストします:

    1. SMTPサーバーに接続します:

      telnet gitlab.example.com 25
      

      次のようなプロンプトが表示されます:

      Trying 123.123.123.123...
      Connected to gitlab.example.com.
      Escape character is '^]'.
      220 gitlab.example.com ESMTP Postfix (Ubuntu)
      

      代わりにConnection refused エラーが表示される場合は、ファイアウォールがポート 25 の受信トラフィックを許可するように設定されていることを確認してください。

    2. SMTPプロンプトに次のように入力して、incoming ユーザーに電子メールを送信して SMTP をテストします:

      ehlo gitlab.example.com
      mail from: root@gitlab.example.com
      rcpt to: incoming@gitlab.example.com
      data
      Subject: Re: Some issue
            
      Sounds good!
      .
      quit
      
      note
      . は、その行のリテラル・ピリオドです。
    3. incoming ユーザーがメールを受信したかどうかをチェックします:

      su - incoming
      MAIL=/home/incoming/Maildir
      mail
      

      このような出力が表示されるはずです:

      "/home/incoming/Maildir": 1 message 1 unread
      >U   1 root@gitlab.example.com                           59/2842  Re: Some issue
      

      メールアプリを終了します:

      q
      
    4. incoming アカウントからサインアウトし、root に戻ります:

      logout
      
  2. 新しいセットアップでIMAPをテストします:

    1. IMAPサーバーに接続します:

      telnet gitlab.example.com 143
      

      次のようなプロンプトが表示されます:

      Trying 123.123.123.123...
      Connected to mail.gitlab.example.com.
      Escape character is '^]'.
      - OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION] Courier-IMAP ready. Copyright 1998-2011 Double Precision, Inc.  See COPYING for distribution information.
      
    2. IMAP プロンプトに次のように入力して、IMAP をテストするためにincoming ユーザーとしてサインインします:

      a login incoming PASSWORD
      

      PASSWORD は、先ほどincoming ユーザーに設定したパスワードに置き換えてください。

      このような出力が表示されるはずです:

      a OK LOGIN Ok.
      
    3. IMAPサーバーから切断します:

      a logout
      

To-Doone

すべてのテストが成功したら、Postfix のセットアップは完了です!GitLab を設定するために、メールの受信ガイドを続けてください。


この文書は、Ubuntu documentation wiki の貢献者によるhttps://help.ubuntu.com/community/PostfixBasicSetupHowtoを参考にしました。