Postfix.adminでのメールエイリアス管理支援ツールをExcel-VBAで作ってみました。
作成経緯
メールサーバにpostfixを使用しており、そのアカウント管理にpostfix.adminを使用しています。
社員数が十数人、エイリアスが数個レベルの時は手動でも良かったのですが、社員数が50人、100人を超え、エイリアスも30個、70個と増えてきて、毎日のように頻繁にエイリアスの更新依頼が来るようになると、とても手で作業していられません。
そこで、postfix.adminのエイリアス画面にペタっとコピペできる形でメールアドレスのリストを自動で生成できるExcel-VBAを考えました。
動作環境
Microsoft製の有償純正Excel
オープンオフィス系や、MSの無料プレビュー版を使うと、VBAマクロが壊れてしまう現象を確認しています。
管理シートのフォーマット
登録内容管理シート
シート名は後述のマクロで見つけられる様に「mailalias」とします。
A列3行目から下にズラーっと氏名
B列3行目から下にズラーっと所属名
C列3行目から下にズラーっとメールアドレス
D列2行目から右にズラーっとエイリアス名
D列3行目から下と右にズラーっと、プルダウンメニュー形式で「O」を選べるように入力規則を設定。
上記の様なシートを作成し、更新はエイリアスを更新したくなった各プロジェクトのリーダーに「O」をポチポチ入れて貰ったり、追加したい場合はD列以降2行目にエイリアス名を入れて貰って、「O」をポチポチ付けてもらうだけです。
「○」じゃなくて「O」にしているのは、前者が英語版Macで使えなくてマクロが動かなかったからです。
私のインフラチーム内に外国籍メンバーが数人居るので、必要な措置でした。
そしてこのシートには後述するマクロを実行するボタンをどこかに付けておきます。
インフラ担当者はそのボタンを押すだけです。
エイリアスリストのシート
シート名は後述のマクロから見つけられる様に「LIST」とします。
B列1行目から右にズラ~っとエイリアス名が入ります。
B列2行目から下にズラ~っとエイリアスメンバーのメルアドが入ります。
C列以降も同様です。
ボタンを押すと上記フォーマットでリストが出来上がるので、それをコピペしてpostfix.adminのエイリアス管理画面にコピペするだけです。
コード
createList.vba
Sub createList()
Dim linenumber As Integer
Dim colnumber As Integer
Dim reslinenumber As Integer
Dim rescolnumber As Integer
Dim chkmark As String
linenumber = 3
colnumber = 4
reslinenumber = 2
rescolnumber = 2
chkmark = "O"
i = 1
j = 2
' 一旦クリア
Worksheets("LIST").Select
Do Until Worksheets("LIST").Cells(i, j).Value = ""
Do Until Worksheets("LIST").Cells(i, j).Value = ""
Worksheets("LIST").Cells(i, j).Value = ""
i = i + 1
Loop
i = 1
j = j + 1
Loop
' 列のループ
Worksheets("mailalias").Select
Do Until Cells(2, colnumber).Value = ""
' 行のループ
Do Until Cells(linenumber, 3).Value = ""
If Cells(linenumber, colnumber).Value = "O" Then
If (Worksheets("LIST").Cells(1, rescolnumber).Value = "") Then
Worksheets("LIST").Cells(1, rescolnumber) = Cells(2, colnumber)
End If
Worksheets("LIST").Cells(reslinenumber, rescolnumber) = Cells(linenumber, 3)
reslinenumber = reslinenumber + 1
End If
linenumber = linenumber + 1
Loop
linenumber = 3
reslinenumber = 2
colnumber = colnumber + 1
rescolnumber = rescolnumber + 1
Loop
Worksheets("LIST").Select
End Sub
まとめ
Sub createList()
Dim linenumber As Integer
Dim colnumber As Integer
Dim reslinenumber As Integer
Dim rescolnumber As Integer
Dim chkmark As String
linenumber = 3
colnumber = 4
reslinenumber = 2
rescolnumber = 2
chkmark = "O"
i = 1
j = 2
' 一旦クリア
Worksheets("LIST").Select
Do Until Worksheets("LIST").Cells(i, j).Value = ""
Do Until Worksheets("LIST").Cells(i, j).Value = ""
Worksheets("LIST").Cells(i, j).Value = ""
i = i + 1
Loop
i = 1
j = j + 1
Loop
' 列のループ
Worksheets("mailalias").Select
Do Until Cells(2, colnumber).Value = ""
' 行のループ
Do Until Cells(linenumber, 3).Value = ""
If Cells(linenumber, colnumber).Value = "O" Then
If (Worksheets("LIST").Cells(1, rescolnumber).Value = "") Then
Worksheets("LIST").Cells(1, rescolnumber) = Cells(2, colnumber)
End If
Worksheets("LIST").Cells(reslinenumber, rescolnumber) = Cells(linenumber, 3)
reslinenumber = reslinenumber + 1
End If
linenumber = linenumber + 1
Loop
linenumber = 3
reslinenumber = 2
colnumber = colnumber + 1
rescolnumber = rescolnumber + 1
Loop
Worksheets("LIST").Select
End Sub
この管理シートを作るだけで、かなりエイリアス管理業務が楽になり、且つ正確になりました。
mailaliasシートは、利用者にやさしくマルをつけるだけ。
LISTシートはインフラーにやさしくコピーするだけ。
このマクロがpostfix.adminのエイリアス管理をされている方のお役に立てれば幸いです。
Author And Source
この問題について(Postfix.adminでのメールエイリアス管理支援ツールをExcel-VBAで作ってみました。), 我々は、より多くの情報をここで見つけました https://qiita.com/kirksencho/items/e3c599c037d7f7226700著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .