You are here: Home tech Server系 メールサーバの構築について
Navigation

 
Document Actions

メールサーバの構築について

Postfix・Dovecotのインストールについて

まずは、通常動いているSMTPサーバ(Sendmail)をとめてしまいます。

# service sendmail stop
# chkconfig sendmail off
次に必要なソフトをインストールします。インストールは、yumを使って行います。
# yum install postfix
# yum install dovecot
インストールが完了したら、デフォルトで使用するMTAを変更します。変更するには、下記のコマンドを実行します。
# alternatives --config mta

There are 2 programs which provide 'mta'.

Selection Command
-----------------------------------------------
* 1 /usr/sbin/sendmail.sendmail
+ 2 /usr/sbin/sendmail.postfix

Enter to keep the current selection[+], or type selection number: 2
2を選択し、postfixをデフォルトのMTAに設定します。
次に、configファイルを編集していきます。まずは、postfixです。なお、今回はMaildir形式の設定ですので、mailbox形式の場合は、変換が必要になります。変換方法は、他サイト様をご覧下さい。
# vi /etc/postfix/main.cf
とりあえず、必要なところを下記のようにします。
#soft_bounce = no
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
mail_owner = postfix
#default_privs = nobody
myhostname = hoge.hoge.net
mydomain = hoge.net
#myorigin = $myhostname
myorigin = $mydomain
inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
#inet_interfaces = localhost
#proxy_interfaces =
#proxy_interfaces = 1.2.3.4
#mydestination = $myhostname, localhost.$mydomain, localhost
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
#local_recipient_maps = unix:passwd.byname $alias_maps
#local_recipient_maps = proxy:unix:passwd.byname $alias_maps
#local_recipient_maps =
unknown_local_recipient_reject_code = 550
#mynetworks_style = class
mynetworks_style = subnet
#mynetworks_style = host
mynetworks = 192.168.1.0/24, 127.0.0.0/8
#mynetworks = $config_directory/mynetworks
#mynetworks = hash:/etc/postfix/network_table
#relay_domains = $mydestination
#relayhost = $mydomain
#relayhost = [gateway.my.domain]
#relayhost = [mailserver.isp.tld]
#relayhost = uucphost
#relayhost = [an.ip.add.ress]
#relay_recipient_maps = hash:/etc/postfix/relay_recipients
#in_flow_delay = 1s
#alias_maps = dbm:/etc/aliases
alias_maps = hash:/etc/aliases
#alias_maps = hash:/etc/aliases, nis:mail.aliases
#alias_maps = netinfo:/aliases
#alias_database = dbm:/etc/aliases
#alias_database = dbm:/etc/mail/aliases
alias_database = hash:/etc/aliases
#alias_database = hash:/etc/aliases, hash:/opt/majordomo/aliases
#recipient_delimiter = +
#home_mailbox = Mailbox
home_mailbox = Maildir
#mail_spool_directory = /var/mail
#mail_spool_directory = /var/spool/mail
#mailbox_command = /some/where/procmail
#mailbox_command = /some/where/procmail -a "$EXTENSION"
mailbox_command = /usr/bin/procmail
#mailbox_transport = lmtp:unix:/file/name
#mailbox_transport = cyrus
#fallback_transport = lmtp:unix:/file/name
#fallback_transport = cyrus
#fallback_transport =
#luser_relay = $user@other.host
#luser_relay = $local@other.host
#luser_relay = admin+$local
#header_checks = regexp:/etc/postfix/header_checks
#fast_flush_domains = $relay_domains
#smtpd_banner = $myhostname ESMTP $mail_name
#smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)
smtpd_banner = $myhostname ESMTP unknown
#local_destination_concurrency_limit = 2
#default_destination_concurrency_limit = 20
debug_peer_level = 2
#debug_peer_list = 127.0.0.1
#debug_peer_list = some.domain
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
xxgdb $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.1.5/samples
readme_directory = /usr/share/doc/postfix-2.1.5/README_FILES
#smtpd_sasl_auth_enable = yes
#smtpd_sasl_local_domain = $myhostname
#smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
#smtpd_client_restrictions = reject_rbl_client relays.ordb.org
#message_size_limit = 10485760

次にDovecotのconfigファイルを編集します。

# vi /etc/dovecot.conf
とりあえず、必要なところを下記のようにします。
#base_dir = /var/run/dovecot/
protocols = imap imaps pop3 pop3s
imap_listen = *
pop3_listen = *
imaps_listen = *
pop3s_listen = *
#ssl_disable = no
#ssl_cert_file = /usr/share/ssl/certs/dovecot.pem
#ssl_key_file = /usr/share/ssl/private/dovecot.pem
#ssl_parameters_file = /var/run/dovecot/ssl-parameters.dat
#ssl_parameters_regenerate = 24
#disable_plaintext_auth = yes
#log_path =
#info_log_path =
#log_timestamp = "%b %d %H:%M:%S "
login_dir = /var/run/dovecot-login
#login_chroot = yes
login = imap
#login_executable = /usr/libexec/dovecot/imap-login
#login_user = dovecot
#login_process_size = 32
#login_process_per_connection = yes
#login_processes_count = 3
#login_max_processes_count = 128
#login_max_logging_users = 256
login = pop3
#login_executable = /usr/libexec/dovecot/pop3-login
#max_mail_processes = 1024
#verbose_proctitle = no
#verbose_ssl = no
#first_valid_uid = 500
#last_valid_uid = 0
#first_valid_gid = 1
#last_valid_gid = 0
mail_extra_groups = mail
#valid_chroot_dirs =
#mail_chroot =
#default_mail_env =
default_mail_env = maildir:~/Maildir
#mail_cache_fields = MessagePart
#mail_never_cache_fields =
#client_workarounds =
#mailbox_check_interval = 0
#mailbox_idle_check_interval = 30
#mail_full_filesystem_access = no
#mail_max_flag_length = 50
#mail_save_crlf = no
#mail_read_mmaped = no
#maildir_stat_dirs = no
#maildir_copy_with_hardlinks = no
#maildir_check_content_changes = no
mbox_locks = fcntl
#mbox_read_dotlock = no
#mbox_lock_timeout = 300
#mbox_dotlock_change_timeout = 30
#umask = 0077
#mail_drop_priv_before_exec = no
#imap_executable = /usr/libexec/dovecot/imap
#imap_process_size = 256
#imap_use_modules = no
#imap_modules = /usr/lib/dovecot/imap
#pop3_executable = /usr/libexec/dovecot/pop3
#pop3_process_size = 256
#pop3_use_modules = no
#pop3_modules = /usr/lib/dovecot/pop3
auth = default
auth_mechanisms = plain
#auth_realms =
#auth_default_realm =
auth_userdb = passwd
#auth_passdb = pgsql /usr/local/etc/dovecot-pgsql.conf
auth_passdb = shadow
#auth_passdb = pam
#auth_executable = /usr/libexec/dovecot/dovecot-auth
#auth_process_size = 256
#auth_user = root
#auth_chroot =
#auth_count = 1
#auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@
#auth_anonymous_username = anonymous
#auth_verbose = no
#auth_debug = no
#auth = digest_md5
#auth_mechanisms = digest-md5
#auth_realms =
#auth_userdb = passwd-file /etc/passwd.imap
#auth_passdb = passwd-file /etc/passwd.imap
#auth_user = imapauth
#auth_chroot =
次に、通常ユーザを作成するとmailbox形式になってしまうため、Maildirの雛形を作ります。
# mkdir -p /etc/skel/Maildir/new
# mkdir -p /etc/skel/Maildir/cur
# mkdir -p /etc/skel/Maildir/tmp
# chmod -R 700 /etc/skel/Maildir

これで、新規ユーザを作るとMaildirフォルダを自動で作成してくれます。

次に、procmailの設定ファイルを作ります。

# vi /etc/procmailrc

新しいファイルに下記の内容を書き込みます。これで、配送先がMaildirになり、未承諾広告が届かなくなります。

DROPPRIVS=yes
MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/
#LOGFILE=$HOME/procmail.log # ログ出力先
#VERBOSE=ON # 詳細ログ出力

# 未承諾広告メール削除※システムの文字コードがUTF-8(デフォルト)の場合
:0
* ^Subject:.*iso-2022-jp
* ^Subject:\/.*
* ? echo "$MATCH" | nkf -mwZ2 | sed 's/[[:space:]]//g' | egrep '未承諾広告
※'
/dev/null

# 未承諾広告メール削除※システムの文字コードがEUCの場合
:0
* ^Subject:.*iso-2022-jp
* ^Subject:\/.*
* ? echo "$MATCH" | nkf -meZ2 | sed 's/[[:space:]]//g' | egrep '未承諾広告
※'
/dev/null

後は、postfixとdovecotを起動します。

# service postfix start
# service dovecot start
最後に、サーバが再起動したときに自動起動するように設定します。
# chkconfig postfix on
# chkconfig dovecot on

メールを受けるだけのユーザを作成するには、下記のコマンドを実行します。

# useradd user
新規ユーザを作らずに、既存アドレスに転送するだけなら、aliasesファイルに書くだけです。
# vi /etc/aliases

フォーマットは以下の通りです。

受け取るユーザ:  (Tab)転送先ユーザ

編集が終了したら、aliasesを反映させます。

# newaliases

これで、smtp・pop・imapのサービスが使用できるようになっているはずです。外から使用する場合は、ルータのポートを空ける必要がありますが、適当にどうぞ。