Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

メールサーバ構築:Postfix, dovecot, mutt

More than 3 years have passed since last update.

OS:CentOS 7

以下のページを参考にしました
Postfix
http://www.sea-bird.org/pukiwiki/index.php?Postfix%A4%C7spam%A5%E1%A1%BC%A5%EB%C1%F7%BF%AE%B8%B5%A1%A6%C1%F7%BF%AE%BC%D4%A4%CB%A4%E8%A4%EB%C0%A9%B8%C2%A4%CE%B4%AC
http://unixlife.jp/linux/centos-5/postfix-secure.html

dovecot
http://www.aconus.com/~oyaji/centos/dovecot_centos.htm

mutt
https://wiki.archlinuxjp.org/index.php/Mutt
http://www.emaillab.org/mutt/
http://takachan.jra.net/blog/archives/476

サーバー証明書
http://www.aconus.com/~oyaji/www/certs_linux.htm

firewalldは以下を参考に開けておく
http://qiita.com/kentakozuka/items/d32ace44299edf045c6b

Postfix

smtp(25)とsubmission(587)のポートは開けておく

インストール

yum -y install postfix cyrus-sasl cyrus-sasl-plain cyrus-sasl-md5   

main.cf

vim /etc/postfix/main.cf
...

### ホスト名を設定
### e.g. mailgw.hogehoge.com
myhostname = mailgw.<ドメイン名>

...

### ドメイン名の設定
### e.g. hogehoge.com
mydomain = <ドメイン名>

...

###メールアドレスの[@]以降に使用するドメイン名を指定
myorigin = $myhostname

...

###SMTP接続を待ち受けるネットワークインターフェースを指定
inet_interfaces = all

...

###ローカル配送を行うドメイン名を指定
mydestination =
        localhost,
        $myhostname,
        $mydomain

...

###smtpd_*****_restrictionsでSMTPサーバがそれぞれのセクションでの接続可/否を設定
###smtpd_client_restrictions = クライアントからの接続要求時
###smtpd_helo_restrictions = HELOコマンドの場面

###RCPT TOコマンドの場面
smtpd_recipient_restrictions =
                             permit_mynetworks
                             reject_non_fqdn_recipient
                             reject_unauth_pipelining
                             permit_sasl_authenticated
                             reject_unauth_destination

###smtpd_sender_restrictions = MAIL FROMコマンドの場面
smtpd_sender_restrictions =
#                         hash:/etc/postfix/spamlist_address
                          reject_unknown_sender_domain

# with SASL2
broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot

# Max TO
smtpd_recipient_limit = 5000

# Max Message Size
message_size_limit = 51200000

###ソフト名とバージョン番号を非表示にする
smtpd_banner = $myhostname ESMTP

master.cf

各フィールドは以下の通り
service
Postfixのサービス(デーモン)名の指定
type
サービスのタイプの指定
private
メールシステムへのアクセス制限の有無を指定
unpriv
サービスをrootか所有者で動作させるかを指定
chroot
chroot jail環境で動作の有無を指定
wakeup
サービスを何秒後に起動させるかを指定
maxprox
プロセスを同時に起動できる最大数の指定
command + args
サービスの実態プログラムと、その引数の指定

vim /etc/postfix/master.cf
...
#tlsproxy  unix  -       -       n       -       0       tlsproxy
submission inet n       -       n       -       -       smtpd
#  -o smtpd_tls_security_level=encrypt
...

saslauthd

vim /etc/sysconfig/saslauthd
...
###MECH=pam
MECH=shadow
...

バーチャルドメイン(virtual_maps)の設定

mv /etc/postfix/virtual /etc/postfix/virtual.org
vim /etc/postfix/virtual   
# 受信可能なドメイン名        anything
<ドメイン名> anything
# 受信可能なアドレス       転送先アドレスor実ユーザー名
<アドレス>    <実ユーザ名>
/usr/sbin/postmap hash:/etc/postfix/virtual < /etc/postfix/virtual
systemctl restart postfix                   

dovecot

インストール

yum -y install dovecot

設定

vim /etc/dovecot/dovecot.conf
...
#protocols = imap pop3 lmtp
protocols = imap imaps pop3 pop3s
...
vim /etc/dovecot/conf.d/10-mail.conf
...
#mail_location =
mail_location = maildir:~/Maildir
...

このへんはお好みで

vim  /etc/dovecot/conf.d/10-auth.conf
...
disable_plaintext_auth = yes
...

このへんはお好みで

vim /etc/dovecot/conf.d/10-ssl.conf
...
ssl = required
###ssl = no

# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
# dropping root privileges, so keep the key file unreadable by anyone but
# root. Included doc/mkcert.sh can be used to easily generate self-signed
# certificate, just make sure to update the domains in dovecot-openssl.cnf
ssl_cert = <証明書のパス>
ssl_key = <キーのパス>
...
systemctl enable dovecot                                
systemctl start dovecot                                
systemctl status dovecot

もしくは

systemctl restart dovecot

【任意】pop3とimpa4の接続を確認

POP3

$ telnet <ドメイン名> pop3
Trying XXX.XXX.XXX.XXX...
Connected to <ドメイン>.
Escape character is '^]'.
+OK Dovecot ready.
user <ユーザ名>
pass <パスワード>
+OK
+OK Logged in.
quit
+OK Logging out.
Connection closed by foreign host.

IMAP4

$ telnet <ドメイン名> 143
Trying XXX.XXX.XXX.XXX...
Connected to <ドメイン>.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN] Dovecot ready.
1 login <ユーザ名> <パスワード>
1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS SPECIAL-USE BINARY MOVE] Logged in
1 logout
* BYE Logging out
1 OK Logout completed.
Connection closed by foreign host.

mutt

これはサーバ側でなくクライアントです。
リモートサーバに接続してメールをフェッチします。

.mutrc

vim ~.muttrc
set folder=»»---imaps://<ユーザ名>@<ドメイン>/↲                                                                                                                                                                
set imap_user=»-<ユーザ名>
set spoolfile=»-+INBOX↲
↲
#色付け↲
color normal green default↲
color hdrdefault cyan default↲
color header yellow default ^(From|Subject):↲
color quoted cyan default↲
color signature red default↲
color attachment blue default↲
color body magenta default "(ftp|http)://[^ ]+" # point out URLs↲
color body magenta default [-a-z_0-9.]+@[-a-z_0-9.]+ # e-mail addresses↲
color search black yellow # how to hilite search patterns in the pager↲
alias 'flkj^[^[qqq' ^[ <^[>↲
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away