4:設定時に躓いた事

メールソフト(thunderbird)の設定ミス 最初はvirtual domain でなく単独のメールサーバーでテストをし、その後virtual domainを導入していました。virtual domain 関連の設定をしたが、如何してもdovecot にログイン出来無い。その時のログは

Jan 08 10:09:00 auth-worker(13946): Info: sql(otake,xxx.xxx.xx.xx,<i1aZM1m4qOig7U0V>): unknown user
Jan 08 10:09:06 auth-worker(13946): Info: sql(otake,1xxx.xxx.xx.xx,<i1aZM1m4qOig7U0V>): unknown user
Jan 08 10:09:12 auth-worker(13946): Info: sql(otake,xxx.xxx.xx.xx,<i1aZM1m4qOig7U0V>): unknown user
Jan 08 10:09:14 imap-login: Info: Disconnected (auth failed, 3 attempts in 14 secs): user=<otake>, method=PLAIN, rip=xxx.xxx.xx.xx, lip=192.168.xx.xx, TLS, session=<i1aZM1m4qOig7U0V>

これはvirtual の設定をした後なので、ユーザー名の後にドメインが無いのがおかしい。dovecot の設定を色々見たが判らない。やっとの事でメールソフト側の問題である事が分かり thunderbirdのサーバー設定のユーザー名(N):にユーザー名@ドメイン名 とし、同じ様に、送信(SMTP)サーバーの設定のユーザー名(M):に同じものを設定設楽ログイン出来た。

メールの保存が本来と違う所に出来てしまう 私の場合、メールの保存場所は /Mail/ドメイン名/ユーザー名(ドメイン無し)だが、送信メールは本来の場所に保存されているが、dovecotでログインすると/Mail/ドメイン名/ユーザー名@ドメイン名が出来てそこを参照している。postfix は正常なので、dovecotの設定が間違えている筈。local.confの mail_location = maildir:/Mail/%d/%u になっていた。最後の%uはユーザー名@ドメイン名を指すのでこれが原因、ココの最後の %u を %n に変更したら正常になった。

dovecotにログイン出来無い これは結論から言うとpostfixadmin とdovecotの暗号化の違いが原因。これはhttps://www.kinryo.net/?p=1997 を参照して下さい

apacheの Alias の設定が出来無い /etc/httpd/conf.d/postfixadmin.conf を設定している時、本来の場所に飛ばない。この設定は
Alias /postfixadmin “/サーバーのルート/postfixadmin/public”としているが、どうしても最後のPublicでは無く、postfixadminに行ってします。これには二日間も原因が解らなかった。仕方無くアパッチの本家にアクセスし(http://httpd.apache.org/docs/2.2/ja/mod/mod_alias.html)このページの処理の順番を見て、もしやと思い、/etc/httpd/conf.d/ を探すと、在った。如何してこんな所に書いたか全くおかしいが、awreport.conf にAlias /postfixadmin “/サーバーのルート/postfixadmin の記入がある。しかもこのファイルはpostfixadmin.confより前にあるので、ここでヒットし、public に飛ばなかった!!!

    カテゴリー: メールサーバーに挑戦 | コメントする

    3:postfixadminのインストールと設定

    ダウンロードはhttps://sourceforge.net/projects/postfixadmin/にReleased /postfixadmin-3.3.2/PostfixAdmin 3.3.2 – bug fix.tar.gzがありましたのが、私がインストールした時は3.2でしたので、この分の設定です。postfixadmin ディレクトリーを保存した所に INSTALL.TXT がありますのでこれに従って設定して行きますが、postfixadminへのアクセスの為にapacheの設定をします。/etc/httpd/conf.d/ にpostfixadmin.conf というファイルを作成
    # gedit /etc/httpd/conf.d/postfixadmin.conf

    Alias /postfixadmin "/xxxxxxxx/xxxxx/kinryo/postfixadmin/public"
    
    <Location "/postfixadmin">
    	Require all denied
    	Require ip 127.0.0.1
    	Require ip 192.168.xx.xx/24
    	Require all granted
    </Location>

    一部に伏せ字があります。この設定は自分のネットワークからのみアクセスを許可しています。
    # systemctl reload httpd
    とし、設定を反映。

    次はデーターベースの制作 (mysql(mariadb)自体は既にインストール済みです)
    データーベースは mysql(mariadb)
    其ユーザーは postfixadmin
    データーベース名は postfix として作成
    # mysql -u root -p
    パスワードを入力
    MariaDB [(none)]> create database postfix;
    MariaDB [(none)]>grant all privileges on postfix.* to postfixadmin@localhost identified by ‘postfixadminのパスワード’;
    MariaDB [(none)]>quit
    作成したユーザーパスワードでログインできることを確認
    # mysql -u postfixadmin -p
    パスワードを入力

    postfixadminはconfig.inc.phpと同じ場所に config.local.php というファイルを置いておくとデフォルトをオーバーライドしてくれるので、早速作成
    # gedit /WEBのルートディレクトリ/postfixadmin/config.local.php


    <?php
    $CONF['database_type'] = 'mysqli';
    $CONF['database_user'] = 'postfixadmin';
    $CONF['database_password'] = 'xxxxxxxxxx';
    $CONF['database_name'] = 'postfix';
    
    $CONF['configured'] = true;
    $CONF['default_language'] = 'ja';
    ?>

    次は、template_c ディレクトリーの作成
    # mkdir /WEBのルートディレクトリ/postfixadmin/template_c
    postfixadmin ディレクトリー以下のオーナーをapacheにする。
    # chown -R apache. /WEBのルートディレクトリ/postfixadmin

    そしてブラウザで ドメイン/postfixadmin/setup.phpにアクセス

    この画面は全く初めてアクセスすると上の画面とは若干違う(好画面は二回目以降の画面)ここで、管理者に自分のメールアドレスを入力し、設定するパスワードを二回入れ、管理者をクリックすると

    赤字の最後の行の $CONF[‘setup_password’] で始まる行をconfig.local.phpにコピー

    <?php
    $CONF['database_type'] = 'mysqli';
    $CONF['database_user'] = 'postfixadmin';
    $CONF['database_password'] = 'XXXXXXXXX';
    $CONF['database_name'] = 'postfix';
    
    $CONF['configured'] = true;
    $CONF['default_language'] = 'ja';
    
    $CONF['setup_password'] = '07dfece4c2cce2b07b8bb1b8b477310b:7ab14259fc21b0e3a79610c5386d3f76a3f06c0a';
    ?>

    これで、 ドメイン/postfixadmin にアクセスすると
    そして、メアドとパスワードを入れ、ログインをクリックすると

    これで、ドメインやメアドなどが作れる。

      カテゴリー: メールサーバーに挑戦 | コメントする

      2:dovecotの設定

      dovecotの認証はmysql(mariadb)を使います、SSLはletsencryptを使用、ログはデフォルトのmail.logでは無くdovecot.logにする。imapとpop3の設定が入っているが、pop3はファイヤーウォールで禁止しています。SMTP認証もdovecot側でやります。
      メールの保存場所には新規に作った50GBの領域である /Mail にドメイン/ユーザー名(メアドの@より前の部分)として保存、ここをアクセスするユーザーは新規にvmailというユーザーを作成し、其UID、GIDを10000とし、このユーザーでメールの保存などをする。
      dovecotは、/etc/dovecot/local.conf を作る事でデフォルトの設定を変更できます。
      まずはlocal.confを有効にする為に /etc/dovecot.conf の最後に !include_try local.conf を書き入れます。次に /etc/dovecot/conf.d/10-auth.conf を変更
      #!include auth-system.conf.ext 先頭に#を入れてコメントアウト(これはシステムのログインを使う場合なので今回はコメントアウト)
      !include auth-sql.conf.ext の先頭の#を削除し有効化。
      次に、local.confを作成
      # gedit /etc/dovecot/local.conf
      protocols = imap pop3
      listen = *
      login_greeting = ready.
      syslog_facility = local5
      log_path = /var/log/dovecot.log
      ssl = yes
      ssl_cert = </etc/letsencrypt/live/mail.kinryo.net/fullchain.pem
      ssl_key = </etc/letsencrypt/live/mail.kinryo.net/privkey.pem
      mail_location = maildir:/Mail/%d/%n
      first_valid_uid = 10000
      first_valid_gid = 10000
      mail_uid = 10000
      mail_gid = 10000
      #auth_mechanisms = plain
      auth_mechanisms = plain login cram-md5
      service auth {
           unix_listener /var/spool/postfix/private/auth {
                mode = 0660
                user = postfix
                group = postfix
                }
      }
      #protocol imap {
      #     mail_plugins = quota imap_quota
      #}
      #protocol pop3 {
      #     mail_plugins = quota
      #}
      #auth_verbose = yes
      #auth_debug = yes

      quotaは現時点では未使用(将来の為)、最後のauthから始まる二行はデバッグをするときに有効にする。ドメインやユーザーの作成はpostfixadminから行いますが、その際パスワードの暗号化を同じにするために、auth_mechanisms = plain login cram-md5 を入れてあります。ここはcram-md5 だけでいいと思いますが、未検証です。また、postfixadmin側の暗号化をcram-md5にするために、postfixadminの下にある config.inc.phpに
      //$CONF[‘encrypt’] = ‘md5crypt’; の下に
      $CONF[‘encrypt’] = ‘dovecot:CRAM-MD5’; を記入し保存。これでパスワードの暗号化がcram-md5になる。次にmysql(mariadb)関連の設定
      # gedit /etc/dovecot/dovecot-sql.conf.ext

      driver = mysql
      connect = host=localhost dbname=postfix user=postfix password=fwge6500!
      default_pass_scheme = PLAIN
      user_query = select concat('/Mail/', maildir) as home, 10000 as uid, 10000 as gid FROM mailbox WHERE username = '%u' AND active = '1';
      password_query = SELECT password FROM mailbox WHERE username = '%u' AND active = '1';

      次はpostfixadminのインストールと設定。3:postfixadminのインストールと設定を参照

        カテゴリー: メールサーバーに挑戦 | コメントする

        1:postfixの設定

        2021-1-10現在の情報です。現時点でのテストは二つのドメインの内、kinryo.netに関してはほぼテストが終了していますが、kinryokai.netに関してはローカルネットワーク内でのテストのみが終了していますが、グローバルからのテストはまだ出来て居ません。というのも、このドメインは現時点で全く別のホストで現行のメールサーバーが稼働しており、DNSの設定を変更しないとならないのですが、過去のメールのデーターを移し変えていないからです。

        postfixはvirtualで複数のメールサーバーを稼動させます。下記に postconf -n の結果を記します。(ご存じだと思いますが、これはデフォルトの設定から変更した部分のみを表示しています)この設定はメイルボックスはMaildir形式(一つのメールが一つのファイル)、ipv6は使はない、スパムやウィルスチェックは centossrv.comを参考に設定、sasl authを導入、その認証は dovecotに委せる(dovecotの設定で出てきますが、認証はmysql(mariadb)を使う)、メールの暗号化は letsencrypt を使う、メイルデーターの保存場所は /Mail (これは移設を簡単にするために、新たに専用の領域を作った。又、新規ユーザーとしてvmailを作成しそのUID、GIDを10000にした。又 /mail以下の所有者をvmailにした。)、バーチャルドメインやバーチャルメイルボックスにはmysql(mariadb)を使う。IPアドレスは伏せ字。
        # posyconf -n
        alias_database = hash:/etc/aliases
        alias_maps = hash:/etc/aliases
        command_directory = /usr/sbin
        config_directory = /etc/postfix
        daemon_directory = /usr/libexec/postfix
        data_directory = /var/lib/postfix
        debug_peer_level = 2
        debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
        disable_vrfy_command = yes
        header_checks = regexp:/etc/postfix/header_checks
        home_mailbox = Maildir/
        html_directory = no
        inet_interfaces = all
        inet_protocols = ipv4
        local_recipient_maps =
        local_transport = virtual
        luser_relay = unknown_user@localhost
        mail_owner = postfix
        mailbox_command = /usr/bin/procmail
        mailbox_size_limit = 9663676416
        mailq_path = /usr/bin/mailq.postfix
        manpage_directory = /usr/share/man
        message_size_limit = 52428800
        milter_command_timeout = 150
        milter_default_action = tempfail
        milter_mail_macros = {auth_author} {auth_type} {auth_authen}
        milter_protocol = 6
        mydestination =
        mydomain = kinryo.net
        myhostname = mail.kinryo.net
        mynetworks = 192.168.X.X/24, 127.0.0.0/8
        myorigin = $mydomain
        newaliases_path = /usr/bin/newaliases.postfix
        queue_directory = /var/spool/postfix
        readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
        sample_directory = /usr/share/doc/postfix-2.10.1/samples
        sendmail_path = /usr/sbin/sendmail.postfix
        setgid_group = postdrop
        smtp_tls_ciphers = high
        smtp_tls_mandatory_protocols = !SSLv2,!SSLv3
        smtp_tls_protocols = !SSLv2,!SSLv3
        smtp_tls_security_level = may
        smtpd_banner = $myhostname ESMTP unknown
        smtpd_client_restrictions = permit_mynetworks, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_client, reject_rbl_client all.rbl.jp, reject_rbl_client zen.spamhaus.org, permit
        smtpd_helo_required = yes
        smtpd_milters = unix:/var/run/milter-manager/milter-manager.sock
        smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination
        smtpd_sasl_auth_enable = yes
        smtpd_sasl_local_domain = $myhostname
        smtpd_sasl_path = private/auth
        smtpd_sasl_security_options = noanonymous
        smtpd_sasl_type = dovecot
        smtpd_sender_restrictions = reject_unknown_sender_domain, reject_non_fqdn_sender
        smtpd_tls_cert_file = /etc/letsencrypt/live/mail.kinryo.net/fullchain.pem
        smtpd_tls_ciphers = high
        smtpd_tls_key_file = /etc/letsencrypt/live/mail.kinryo.net/privkey.pem
        smtpd_tls_loglevel = 1
        smtpd_tls_mandatory_ciphers = high
        smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3
        smtpd_tls_protocols = !SSLv2,!SSLv3
        smtpd_tls_received_header = yes
        smtpd_tls_security_level = may
        smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache
        tls_high_cipherlist = kEECDH:+kEECDH+SHA:kEDH:+kEDH+SHA:+kEDH+CAMELLIA:kECDH:+kECDH+SHA:kRSA:+kRSA+SHA:+kRSA+CAMELLIA:!aNULL:!eNULL:!SSLv2:!RC4:!MD5:!DES:!EXP:!SEED:!IDEA:!3DES
        unknown_local_recipient_reject_code = 550
        virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
        virtual_gid_maps = static:10000
        virtual_mailbox_base = /Mail
        virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
        virtual_mailbox_limit = 9663676416
        virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
        virtual_transport = virtual
        virtual_uid_maps = static:10000
        尚、smtpd_client_restrictions, smtpd_sender_restrictions, smtpd_recipient_restrictions, は同じような設定が出来るが、勘違いしやすいので、https://www.netmarvs.com/archives/3808 を参考にすると良い。

        /etc/postfix/master.cf は
        smtp inet n – n – – smtpd
        smtps inet n – n – – smtpd
        -o smtpd_tls_wrappermode=yes
        -o smtpd_sasl_auth_enable=yes
        pickup unix n – n 60 1 pickup
        cleanup unix n – n – 0 cleanup
        qmgr unix n – n 300 1 qmgr
        tlsmgr unix – – n 300 1 tlsmgr
        rewrite unix – – n – – trivial-rewrite
        bounce unix – – n – 0 bounce
        defer unix – – n – 0 bounce
        trace unix – – n – 0 bounce
        verify unix – – n – 1 verify
        flush unix n – n 1000? 0 flush
        proxymap unix – – n – – proxymap
        proxywrite unix – – n – 1 proxymap
        smtp unix – – n – – smtp
        relay unix – – n – – smtp
        showq unix n – n – – showq
        error unix – – n – – error
        retry unix – – n – – error
        discard unix – – n – – discard
        local unix – n n – – local
        virtual unix – n n – – virtual
        lmtp unix – – n – – lmtp
        anvil unix – – n – 1 anvil
        scache unix – – n – 1 scache

        mysql(mariadb)関連。尚、postfixadminのdatabase名:postfix, user名:postfixadmin, パスワードは伏せ字
        # cat /etc/postfix/mysql_virtual_alias_maps.cf
        user = postfixadmin
        password = XXXXXX
        hosts = localhost
        dbname = postfix
        table = alias
        select_field = goto
        where_field = address

        # cat /etc/postfix/mysql_virtual_domains_maps.cf
        user = postfixadmin
        password = XXXXXX
        hosts = localhost
        dbname = postfix
        table = domain
        select_field = domain
        where_field = domain
        additional_conditions = and active = ‘1’

        # cat /etc/postfix/mysql_virtual_mailbox_maps.cf
        user = postfixadmin
        password = XXXXXX
        hosts = localhost
        dbname = postfix
        table = mailbox
        select_field = maildir
        where_field = username

         

          カテゴリー: メールサーバーに挑戦 | コメントする

          CentOS7にphp-imapをインストールする方法(php7.3)

          postfixadminをインストール後、setup.phpにアクセスすると二つの問題が表示された。

          一つは  Error: Can’t connect to database
          Please edit the $CONF[‘database_*’] parameters in config.inc.php.

          で、これはデーターベースの設定が間違っているので、チェックするとして

          もう一つが   Warning: Depends on: IMAP functions – NOT FOUND
          To install IMAP support, install php5-imap
          Without IMAP support, you won’t be able to create subfolders when creating mailboxes.

          それで、php5-imap をインストールすることにする。

          だが、色々やっても何も無いとか、phpのバージョンが違うと言われてしまう。私がインストールしているのはphp7.3.25だ。今更phpのバージョンを下げたくないし、下げるとWEBサーバーに使っているCMSのwordpressの問題が出てきそう。そうだと思い、yumのレポジトリーをチェックすると(/etc/yum.repos.d) remi-php73.repoがあった。これを開くと

          [remi-php73]
          name=Remi’s PHP 7.3 RPM repository for Enterprise Linux 7 – $basearch
          #baseurl=http://rpms.remirepo.net/enterprise/7/php73/$basearch/
          #mirrorlist=https://rpms.remirepo.net/enterprise/7/php73/httpsmirror
          mirrorlist=http://cdn.remirepo.net/enterprise/7/php73/mirror
          enabled=0
          gpgcheck=1
          gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi 後略

          とゼロ(つまりdisabled)になっているので、

          # yum install –enablerepo=remi-php73 php-imap (php5-imapでは無い)

          と打ち込むと、php-imap と共にphp-cliやphp-mbstring 等々色んなものがアップデートされた。

           

            カテゴリー: Linux運用時のメモ | コメントする

            また、AMAZONを騙った危険なメールが来た

            このメールは一目で危険なメールだと判る理由は差出人と相手先(受取人)が同じで、自分になっている。こんなメールは送ってない。

            何度も言うが、差出人は偽造できる。昔はでたらめなメアドを入れていたが、今ではほとんどのメールサーバーが差出人が存在するかチェックをしているので、でたらめなメアドは使用できなくなってきているので、受取人のメアドと同じにすればこれをかいくぐれるからこのようなことになっている。

            まず、あれと思ったら、必ず差出人(送信者)をチェックする事。自分なら記憶がある筈。

            上の画像はメールヘッダーと呼ばれている物を詳細に表示したものだが、これは下の赤線のサーバー(cloud-mail.jp がドメインだから、これはアマゾンじゃ無い。)から上の赤線のサーバー経由で私の所に来た。

              カテゴリー: 危険メールや手紙、IP | コメントする

              また、危険なSMSが来た

              少し専門的だが。このドメインのddns.netは固定IPがない人がIPが変更してもトレースしてくれて、WEBなどを公開できるサービスだが、ここを悪用しているな!!

              絶対にクリックしてはいけない。ちなみに表示されている電話番号は多分偽造だろう。

                カテゴリー: 危険メールや手紙、IP | コメントする

                thunderbirdにサーバーにあるディレクトリーが表示されない

                linuxのthunderbird(Ver 68.12.0)でメールサーバーにディレクトリーを作成しても表示されない。

                下記の様に設定すると表示される様になる。

                編集 → アカウント設定 → 左にあるサーバー設定をクリック。右のサーバー設定の右の方にある詳細をクリック。メールユーザー名にある“購読しているフォルダーのみを表示する”のチェックを外す。thunderbirdを再起動すると表示された。

                  カテゴリー: その他 | コメントする

                  危険なIPアドレス

                  今日、メールのログ(/var/log/maillog)をチェックしていたら、ログに 45.125.65.*(実際は二つのIP、書くと避けて送られるので、又このIPは香港に割り当てられいる)から1893回の記録があり、全てログイン失敗になっていた。1回の接続で3つのログが記録されるので、両方のIPで5日間で631回、1日で126回以上のログインが試みられていた。又、141.98.10.*の3つのIPからも583回のログインがあった。これはリトアニアに割り当てられている。ので、この5つのIPを/root/deny_ipとして登録し、設定を反映するために sh iptables.sh を行った。

                    カテゴリー: 危険メールや手紙、IP | コメントする

                    CentOS 7 運用時の色んなメモ

                    apache 設定チェック : apachectl configtest

                    postfix 設定チェック : postfix check

                    postfix設定表示         :   postconf

                    spamassasin 設定チェック : spamassassin –lint  (– は見にくいが: ハイフォンが二つ)

                    ポート指定のping         :   nc -vz ドメイン/IP ポート

                      カテゴリー: Linux運用時のメモ | コメントする