1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

卒業・退職済み利用者宛のメールは転送のみを行う

Last updated at Posted at 2019-12-12

概要

3000人程度の利用者に対するメールシステムを、かれこれ12年間、オンプレミスで運用してきたのですけれど、ついに G Suite に移転することになりました。その間に得たノウハウを、このままロストテクノロジーにするのも惜しいので、過去の作業ログの中から、ある程度汎用性がありそうなトピックを取り出して、公開しようと思います。

近年、卒業・退職した利用者に対して大学からコンタクトをとる必要性1から、構成員に対して生涯メールアドレスを発行するように、大学本部から要請されるケースが増えています。しかし、卒業・退職した利用者のメールボックスも維持していると、メールボックス用ストレージの残容量が速攻で破綻します。

そこで、折衷案として、卒業・退職した利用者に対しては、メールの転送のみを行い、メールボックスの提供はしない、という運用を行なってきました。本稿では、そのための設定手順を紹介します。

前提

幾つかの前提があります。

  • SMTP は Postfix で処理している。
  • IMAP/POP3 は Dovecot で処理している。
  • ローカルなメールボックスへの配送(Postfix → Dovecot)は、LMTP で行う。
  • ユーザによる転送先設定は LDAP に格納されている。

設定内容

設定の基本的な方針は、以下の2段階からなります。

  1. 全利用者宛のメールを転送またはメールボックスに配送する。
  2. メールボックスに配送する時点で、卒業・退職済み利用者宛のメールを破棄する。

これにより、卒業・退職済み利用者については、転送のみを行なって、メールボックスへの配送は行わない、という挙動になります。

全利用者宛のメールを転送またはメールボックスに配送する

基本的な設定は、以下の通り。

/etc/postfix/main.cf
mydomain = example.jp
mydestination = $myhostname, $mydomain
alias_maps = ldap:/etc/postfix/forward.cf

転送設定は、各利用者の mailForward 属性に格納されているものとします。LDAP サーバから読み込むための設定ファイルを、以下のように用意します。

/etc/postfix/forward.cf
bind=yes
bind_dn=cn=mailsystem,ou=systems,dc=example,dc=jp
bind_pw=********
server_host=ldap.example.jp
server_port=389
timeout=20
search_base=ou=users,dc=example,dc=jp
scope=sub
query_filter=(uid=%u)
result_attribute=mailForward

正しく設定されていれば、以下のコマンドで利用者の転送設定が取り出せるはずですので、確認しておいて下さい。

$ postmap -q alice@example.jp ldap:/etc/postfix/forward.cf

ここまでの設定で、まず、全ての利用者(現役の利用者、卒業・退職済み利用者、双方ともに)について、LDAP の設定内容にしたがってメールの転送が行われるようになっているはずです。

なお、メールを転送するだけでなく、メールボックスにも配送を希望する利用者には、以下のように自分自身のメールアドレスも mailForward 属性に書いておいてもらう必要があります。

mailForward: alice@outside.example.net
mailForward: alice@example.jp

メールボックスに配送する時点で、卒業・退職済み利用者宛のメールを破棄する

まず、/etc/postfix/main.cf に以下のように設定します。

/etc/postfix/main.cf
local_recipient_maps = $mailbox_transport_maps
mailbox_transport_maps =
	ldap:/etc/postfix/active_mailbox.cf
	ldap:/etc/postfix/expired_mailbox.cf

現役の利用者宛のメールが LMTP 配送されるように、以下のように設定します。なお、利用者の状態は、各利用者の accountStatus 属性に格納されているものとします。

/etc/postfix/active_mailbox.cf
bind=yes
bind_dn=cn=mailsystem,ou=systems,dc=example,dc=jp
bind_pw=********
server_host=ldap.example.jp
server_port=389
timeout=20
search_base=ou=users,dc=example,dc=jp
scope=sub
query_filter=(&(uid=%u)(accountStatus=active))
result_attribute=uid
result_format=lmtp:imap.example.jp

最後の result_format パラメータの設定が重要です。ここで、LMTP 配送すること、配送先が imap.example.jp であること、の2点を指定しています。

卒業・退職済み利用者宛のメールが破棄されるように、以下のように設定します。

/etc/postfix/expired_mailbox.cf
bind=yes
bind_dn=cn=mailsystem,ou=systems,dc=example,dc=jp
bind_pw=********
server_host=ldap.example.jp
server_port=389
timeout=20
search_base=ou=users,dc=example,dc=jp
scope=sub
query_filter=(&(uid=%u)(!(accountStatus=active)))
result_attribute=uid
result_format=discard

最後の result_format パラメータで、配送先を discard と指定していることがポイントです。discard は、Postfix の特殊な配送先の一種で、メールを全て破棄する配送先です。

  1. 例えば、寄付金を募るなど。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?