質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.43%

  • Python

    9774questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • Linux

    4123questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • CentOS

    2878questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • Postfix

    284questions

    Postfixは、電子メールサーバソフトウェアで、 メールを配送するシステムMTAの一種です。

mailmanで会員登録→承認(確認)したいが、管理画面で保留が表示されません。

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 128

sasa56563

score 3

前提・実現したいこと

mailmanを入会フォームから登録してもらい承認するようにしたいのですが。
これまで管理ページから一括登録して、メール配信をおこなってきましたが、
新たに会員が自分で登録する本来のメーリングリストを作成しようと思っています。

**結果からわかった何が問題になっているかを先に副題として書きます。
mailmanのサーバ移行に際して、生じたPostfixの設定の変更について
送信のtransport_mapsの扱い
ということです。**

発生している問題・エラーメッセージ

mailman/listinfoの画面から登録すると直ちに保留状態になったことは表示されるのですが、
管理画面の「未処理の申請を処理」で見ると、「管理データベース 保留中の申請はありません」と出ています。
確認処理に進みません。


mailmanのエラーログを見ると前の状態に
Jan 08 03:41:06 2019 mailmanctl(691): PID に到達できません: /var/run/mailman/master-qrunner.pid
Jan 08 03:41:06 2019 mailmanctl(691): [Errno 2] No such file or directory: '/var/run/mailman/master-qrunner.pid'
Jan 08 03:41:06 2019 mailmanctl(691): qrunner がまだ走ってますか?
とあります。

同じディレクトリーにあるsubsribeファイルにはpending(保留)としてメールアドレスが記されています。

該当のソースコード

postfixのmain.cf

myhostname = mailing。xxxxx.jp
mydomain = xxxx.jp
myorigin = /etc/mailname
mydestination = $myhostname,localhost.$mydomain, , localhost
relayhost = 
mynetworks = 127.0.0.0/8
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
relay_domains = mailing.xxxxx.jp
mailman_destination_recipient_limit = 1

allow_mail_to_commands=alias,forward,include

試したこと

システムの中でやりとりができていないようなので、ネットワークやメール設定に原因があるわけでなく、
qrunnerについてかな思い調べてみるのですが、よくわかりません。
設定はできるだけ初期の状態でやっていますが、なにか大事なところを設定していないといけないのか不明です。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • sasa56563

    2019/01/10 11:20

    追加情報です。
    すみません。
    Debian+Mailman バージョン: 2.1.13のシステムでは会員登録ができました。
    メールによる確認がありました。

    キャンセル

  • TaichiYanagiya

    2019/01/12 17:20

    「reject: RCPT from localhost[::1]: 454 4.7.1」とのこと、main.cf (または postconf -n)の内容を質問文に追記ください。

    キャンセル

  • sasa56563

    2019/01/12 18:11

    追加した部分としては以下の内容でした。

    myhostname = mailing。xxxxx.jp
    mydomain = xxxx.jp
    myorigin = /etc/mailname
    mydestination = $myhostname,localhost.$mydomain, , localhost
    relayhost =
    mynetworks = 127.0.0.0/8
    mailbox_command = procmail -a "$EXTENSION"
    mailbox_size_limit = 0
    recipient_delimiter = +
    inet_interfaces = all
    relay_domains = mailing.xxxxx.jp
    mailman_destination_recipient_limit = 1

    allow_mail_to_commands=alias,forward,include

    relay関係はいろいろ試したのですが、結果いっしょでしたのでmynetworksのところから
    考えました。

    キャンセル

回答 3

checkベストアンサー

+1

alias_maps で Mailman に受け渡すには、local 配送にする必要があります。
メーリングリスト用のドメインを relay_domains ではなく、mydestination に設定するといいと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/01/13 08:03

    relay_domainsはtransportを使った処理の残滓でした。
    mydestinationで先にpostfixに取り込まれますので、不要となっていました。削除します。

    ログには受け取り自体はできていたようです。
    to=<test-join@mailing.xxxxx.jp>, relay=local, delay=0.1, delays=0.01/0.01/0/0.08, dsn=2.0.0, status=sent (delivered to command: /usr/lib/mailman/mail/mailman join test)

    キャンセル

  • 2019/01/13 15:51

    mailman_destination_recipient_limit = 1
    も未定義のようですので削除しました。
    再起動することで貯まっていたメールも届くようになりました。

    キャンセル

0

未だ完全には解決していませんが、基本的な原因がわかったようです。

正しく動作しているサーバとしていないそれとを比較すると
正しい方はmaillogにsentとされているのに対して、もう一方は記述がありませんでした。

登録はconform確認ファイルをまず登録者に送るようで、その後管理者の確認承認となります。
こう考えるとサーバーの内部処理でなく、一旦postfixを経由するようです。
結局メールの配送が問題で、試しに投稿ファイルを投げると
Error: too many hops (in reply to end of DATA command)
になりました。

2つのサーバは基本的に同じような設定になっているのですが、メールの経由のどこかに
違いがあるのかもしれません。このあたりをもう一度見直します。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/01/10 14:13

    > Error: too many hops (in reply to end of DATA command)

    であれば、メールの経路がループ or ピンポンしていますね。

    キャンセル

  • 2019/01/10 14:59

    ありがとうございます。
    ループは中継機器のインタースキャンの設定変更が保存されていなかったためでした。
    そこは解決し次はそれでもmailmanのシステムへメールが行きません。
    本来はrelay=mailmanとなるところがUser unknown in local recipient tableとなります。
    postfixの設定はほとんど同じなのですが、どこが違っているかしらべています。

    キャンセル

  • 2019/01/10 15:50

    もう少しの処まで来たのですが

    mailログに

    warning: connect to transport private/mailman: No such file or directory

    Jato transport private/mailman: No such file or directoryconnect to transport private/mailman: No such file or directory

    to=<test@mailing.xxxxxxx.jp>, relay=none, delay=0.03, delays=0.01/0.01/0/0.01, dsn=4.3.0, status=deferred (mail transport unavailable)

    なにかファイルがなくてmailmanにrelayできていません。

    postfixのmain.cfのtransportの記述が変わったのでしょうか。
    例が書かれていなかったので別の記述のとおり
    transport_maps = hash:/etc/postfix/transport
    として
    transportファイルはpostmapでtransprt.dbを作成し、
    strings transport.db
    mailman:
    mailing.xxxxx.jp
    とちゃんとできているようなのですが。

    キャンセル

  • 2019/01/10 23:58

    transport_maps で「mailman:」=UNIX ドメインソケット(/var/spool/postfix/private/mailman)に転送しようとして、失敗しています。

    Postfix→Mailman 連携は、一般的には alias_maps (/etc/mailman/aliases) で local: 配送になると思うのですが、なぜ、「mailman:」という専用の配送を使おうとしているのでしょうか。

    キャンセル

  • 2019/01/11 08:03

    ありがとうございます。光明が見えてきた気がします。

    今回10年以上前に作ったmailmanシステム(Debian+postfix 何回か更新)のバックアップ用として
    CentOS+postfixで作りました。はじめからブラウザーで初期状態を作り、そこに会員データを移行する
    形をとりました。

    そこで設定し忘れているのが「mailman:」=UNIX ドメインソケットのことのようです。
    /etc/postfix/master.cf
    mailman unix - n n - - pipe
    flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
    ${nexthop} ${user}

    Debianでは初期設定で記述されているようでCentOSへの移行の際に書き忘れていました。

    バーチャルドメインを使う方法としてalias を使う方法とtransport を使う方法とがあるようで、
    後者を使っていました。この場合、transportでlocal指定するとユーザがないので受け取れない
    となるのかと想像するのですが。

    一度これでやってみて、うまくいかなければ標準的なaliasを使う方法でやるかなと考えます。

    確かにネットで調べてもmailmanとtransportの記述が少ないのに気づきました。

    キャンセル

  • 2019/01/11 17:57

    調べてみたのですが、CentOS+Postfixには
    postfix-to-mailman.pyがありませんでした。
    TaichiYanagiyaさんがおっしゃっていただいたようにalias_mapによる配送を使う方がいいようです。

    さてwebの情報を頼りに修正をしようと思います。
    webでは例として管理用メーリングリスト(mailman)作成から入っていますが、
    webの管理画面からリストを作成したため、管理用メーリングリスト(mailman)は作っていません。
    この場合、alias_mapsを作成し、newaliases、Postfix再起動だけでよろしいのでしょうか。

    キャンセル

  • 2019/01/11 19:04

    メーリングリスト "mailman" は必須だったと思います。

    キャンセル

  • 2019/01/12 15:02

    alias_mapsによる処理に切り替えました。

    # vi /etc/postfix/main.cf

    alias_maps = hash:/etc/aliases, hash:/etc/mailman/aliases
    alias_database = hash:/etc/aliases, hash:/etc/mailman/aliases
    allow_mail_to_commands = alias,forward,include

    に変更し、Mailmanのエイリアスファイル( /etc/mail/aliases ) を設定。

    # /usr/lib/mailman/bin/genaliases
    # chmod 666 /etc/mailman/aliases*
    これでメール制御のリストが作られていましたので
    念のためにメーリングリストmailmanを作成し、再起動。

    mailmanがメールを受信するところまではできましたが、送信の段階でrelay denyを起こしているようです。いままでPostfixで経験はなかったのですが、
    メールログにはNOQUEUE: reject: RCPT from localhost[::1]: 454 4.7.1 と出ています。
    帰って、調べ得てみるとIPv6の関係のようです。対策としてはpostfixのmain.cfでIPv6を止めるか
    mynetworksに[::1]/128とかlocalhostを加えるとかが記されていました。
    どれが良いのかわかりませんので、単純にIPv6を止めるのが良いかと思います。

    あと少しのところにきているようです。

    キャンセル

0

原因はmailmanとpostfixの連携がうまくできていなかったためです。
(1)送信を以前(debianシステムで)使っていたtransport_mapsでおこなおうとしたために
標準でサポートされていませんでした。
そこで標準とされるalias_mapsで置き換えました。

(2)これでmailmanがメールを受信するところまではできましたが、送信の段階でrelay denyを起こしました。これはIPv6の問題で
main.cf
inet_protocols = ipv4
とし、再起動することで正常に動作するようになりました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.43%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Python

    9774questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • Linux

    4123questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • CentOS

    2878questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • Postfix

    284questions

    Postfixは、電子メールサーバソフトウェアで、 メールを配送するシステムMTAの一種です。