【解決】Outlook2019検索-正しく検索されない、漏れがあるんですが

検索結果がどうもおかしい

確かに見たはずのメールが検索結果にひっかかりません。

絶対にあるはずなんですが、検索ワードにひっかからないんです。Gmailに転送もかけていたので、Gmailで検索すると出てきます。

あるはずのメールが検索されないので途方に暮れていました、

Win10からWin11へのアップグレードが原因?

今利用しているこの不具合が出ているマシーンは、元々Windows10マシンでした。これをWindows11にアップグレードしたものです。

Windows10で利用している時には、Outlookで文字列検索して、特に問題を感じたことはなかったのですが、Windows11にした後、Outlookで検索すると、あるはずのメールがヒットしないことが増えてとても困っていたんです。

対処方法1 WindowsSearchが動いていない

スタートボタンを右クリックし、設定をクリックします。

検索ボックスにて、「トラブル」を検索すると、「検索とインデックス作成」が出てきます。

これを実行すると、なんと「Windows Searchが動作していません」という表示が。

これが原因だったようです。

「これらの修復方法を管理者として実行する」をクリックします。

すると、「気づいた問題」の中でOutlookの検索で結果が返されません。があるので、これにチェックを入れ、次へをクリックします。

トラブルシューティングが完了すると

「解決済み」がマークされます。

私は、これで無事に検索で漏れが出なくなりました。すごく不便だったので、検索がちゃんとできるようになって良かった。

対処方法2 Windows修正プログラムのバグ

Windows 更新プログラム KB5008212 の後に Outlook 検索で最近のメールが表示されない

つまりWindowsのバグである可能性があります。

Windows 11 修正プログラムは、次に示す Windows パブリック更新プログラムの一部として配布されます。

Windows 11: 3 月 28 日 th 2022 アップデート、KB5011563

Windows 更新プログラム KB5008212 の後に Outlook 検索で最近のメールが表示されない

修正プログラムを適用後

検索インデックスをリビルドします。

  1. Outlook から、[ファイル][オプション][検索] の順に選択します。
  2. [インデックス作成オプション] を選択し、[詳細設定] を選択 します。
  3. [トラブルシューティング] で [再構築] を選択します。

2つのExcel表全体に差がないかを簡単に確認する方法

2つの表を比較したい

アプリケーション開発していて、データベースの値を集計して表示させたりすることがあります。この値が正しいかどうかを突き合わせたいのですが、一つずつセルを比較していくのは手間です。

vlookup

などで、値が正しいかを見ていく事もできますが、もっと手軽に表全体を比較する方法があります。

減算貼り付けを使う

2つの表を比較したい時に使う手法です

2つの表があります

片方の表をコピーします

もう片方の表の上に貼り付けます

貼り付けるときに「形式を選択して貼り付け」を選びます

演算方法の中で「減算」を選択します

差がないところは0になります

巨大な表になっても、順番が変わらなければこの手法で簡単に差がないかを確認する事が可能です。

怪しい添付ファイルウィルスを見抜く方法-メールの限界

となりの上司が変な添付ファイル開いてた

隣の席に座る上司が、おもむろに電話をし

「こんなメールがきたんだけど、添付ファイル開こうと思って実行したけど、開けない。違うような気がするんですけど送られましたか?」

的なやりとりが。

「やっぱりおかしいと思ったんですよ。送られていなかったら大丈夫です。」

と言ってました。

いやいや、大丈夫じゃないよ。実行したんでしょ。

調べてみた

実際どんな添付ファイルだったのか。

zipファイルでした。

右クリックして、WindowsDefenderでスキャンしてみたところ、

ウィルスは発見されませんでした。

1つのファイルだけ無料オンラインスキャン

Microsoft 標準のWindowsDefenderだとちょっと不安も残るので、無料オンラインスキャンも試してみました。

パソコン全体的にスキャンしてくれるやつだと時間もかかってしまうので、できれば1つのファイルだけスキャンしてくれるものがいいなと探してみたら

Google 傘下のVirusTotalにて、複数のアンチウィルスエンジンにてスキャンしてくれるサービスがありました。とっても便利です。

名だたるアンチウィルスソフトベンダーを一挙にスキャンしてくれます。

メールのシグネチャをたどって

メールのソースを表示させて、どの経路できたのかをたどってみました。

Received: from [102.222.235.111] (unknown [102.222.235.111])
	by zimbra1.kinez.co.id (Postfix) with ESMTPSA id D3D56D07B5B
	for <hoge@hogehoge>; Thu,  3 Mar 2022 18:08:13 +0700 (WIB)

送信元のコンピュータIPアドレスは 102.222.235.111 です。

最近Whois検索させてもらってるのは、 CMAN さんです。

inetnum:        102.222.235.0 - 102.222.235.255
netname:        PPPOE-NATTED-BLOCK2-FTTH
descr:          DYNAMIC NATTED BLOCK2 FTTH
country:        UG   → (ウガンダ)
admin-c:        RK48-AFRINIC
tech-c:         ZM17-AFRINIC
status:         ASSIGNED PA
mnt-by:         KSCL1-MNT
source:         AFRINIC # Filtered
parent:         102.222.232.0 - 102.222.235.255

ウガンダにあるパソコンから送られたようで、確実に迷惑メール、ウィルス系だと判明。

さらに、メールサーバは、

zimbra1.kinez.co.id (Postfix)

から、

id (IANAトップドメイン情報)

Indonesia インドネシア

インドネシアドメインのサーバでした。

やれやれ。

メール限界

これ防ぐことができるんでしょうか。

かなり本腰入れて、メールサーバ側か、もしくは何かゲートウェイ的なものをいれないと防げないようにおもいました。

WADAXのメールなら、ウィルスチェックしてくれるのかなと思うんですけど

パスワード付きZIPだと防げないかも

PostgreSQL INNER JOIN は JOINだけで書ける、さらにusingで簡略化

INNER は単純に省略できます

SELECT cd,name,value FROM
t_master INNER JOIN t_price ON t_master.cd = t_price.cd  

このINNER JOINと、JOINだけで書くSQLは同義になります

SELECT cd,name,value FROM
t_master JOIN t_price ON t_master.cd = t_price.cd  

USINGを使う

さらに上記を簡略化できます。同じフィールド名なら USINGを利用してもっと短くできます。

SELECT cd,name,value FROM t_master JOIN t_price USING(cd)  

3分で稼働Azure上にUbuntuサーバを稼働させてみる-応用静的パブリックIPを動的IPに変更する

AzureにUbuntu

最安構成で、3.8$/月くらいでいけますが、性能的にはどうでしょう。

テストでコンソール画面で利用するくらいなら、全く問題にはならなそうです。あとはサーバで何をさせるかで、スペックアップしないといけないですね。

SSHキーによる接続もできそうです。

グローバルIPアドレスから直接SSH接続できます。この際に使用するユーザ名は、仮想マシン作成時に指定する事ができます。

下記例では

ユーザ名: azureuser (デフォルトの設定です)

パスワード: 秘密鍵

です。

ネットワークはデフォルトのまま作成してみます。

Azure ADを有効、自動シャットダウンも有効にしました。

作成すると、新しいキーのダウンロードが促されます。

接続

グローバルIPアドレスを確認します

ターミナルソフトを利用して接続かけてみます。

私はTeraTermを利用しています。

接続には、デブロイ時にダウンロードを促された秘密鍵を利用します。

ユーザ名・パスワード

ユーザ名: azureuser

パスワード:秘密鍵

という組み合わせになります。ユーザ名はデプロイ時に設定したものです。

ログインできました。

静的PublicIPを設定する方法

仮想マシン作成時に、パブリックIPを新規作成し、

SKU Basic

割り当て 静的

を選択する。

PublicIPアドレスの料金

静的なパブリックIPアドレスは、最初の5つまで、1時間あたり0.4032円です。それ以降は、1時間あたり0.896円となります。(執筆時点。東日本リージョン。)1時間あたり0.4032円は、1ヶ月(30日)あたり、約290円となります。IPアドレスが動的な場合は、仮想マシンを停止して「割り当て解除」とすると課金も停止されますが、固定化した場合には、仮想マシンを停止しても課金されることに注意しましょう。

第10回 仮想マシンの管理、設定、リモート接続(3) (小澤昌樹)

この記述からいくと、動的パブリックIPアドレスなら、仮想マシンを停止して割り当て解除すると課金されない。

静的パブリックIPアドレスは、仮想マシンを停止しても課金される事になります。

ドルで考えないといけないので、為替がうごくと料金も変化するようです。円安になると、コストがあがってしまうという事ですね

マニュアル

こちらが参考になるマイクロソフトのドキュメントです。

クイック スタート:Azure portal で Linux 仮想マシンを作成する

Azure portal を使用して静的パブリック IP アドレスを持つ仮想マシンを作成する

おまけ SoftEhterVPNのインストール

インストールされたUbuntuは、64bit版だった

azureuser@AzureUbuntu01:~$ uname -a
Linux AzureUbuntu01 5.11.0-1028-azure #31~20.04.2-Ubuntu SMP Tue Jan 18 08:46:15 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

gitからSoftEtherをダウンロードする

$ git clone https://github.com/SoftEtherVPN/SoftEtherVPN_Stable.git
Cloning into 'SoftEtherVPN_Stable'...
remote: Enumerating objects: 18851, done.
remote: Counting objects: 100% (241/241), done.
remote: Compressing objects: 100% (210/210), done.
remote: Total 18851 (delta 106), reused 57 (delta 29), pack-reused 18610
Receiving objects: 100% (18851/18851), 461.38 MiB | 26.42 MiB/s, done.
Resolving deltas: 100% (16690/16690), done.
Updating files: 100% (1921/1921), done.

ダウンロードしたフィルを解凍るする

azureuser@AzureUbuntu01:~$ tar -vvxzf softether-vpnserver-v4.38-9760-rtm-2021.08.17-linux-x64-64bit.tar.gz

makeをインストールする

$ sudo apt install make git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libxml2-dev libxslt1-dev libcurl4-openssl-dev libffi-dev libncurses5-dev

.configureする

~/SoftEtherVPN_Stable$ ./configure
---------------------------------------------------------------------
SoftEther VPN for Unix

Copyright (c) Daiyuu Nobori.
Copyright (c) SoftEther VPN Project, University of Tsukuba, Japan.
Copyright (c) SoftEther Corporation.
Copyright (c) all contributors on SoftEther VPN project in GitHub.

License: The Apache License, Version 2.0

Read and understand README.TXT, LICENSE.TXT and WARNING.TXT before use.
---------------------------------------------------------------------

Welcome to the corner-cutting configure script !

The Makefile is generated. Run 'make' to build SoftEther VPN.

makeする

sudo make
省略
sudo make install
省略
--------------------------------------------------------------------
Installation completed successfully.

Execute 'vpnserver start' to run the SoftEther VPN Server background service.
Execute 'vpnbridge start' to run the SoftEther VPN Bridge background service.
Execute 'vpnclient start' to run the SoftEther VPN Client background service.
Execute 'vpncmd' to run SoftEther VPN Command-Line Utility to configure VPN Server, VPN Bridge or VPN Client.
--------------------------------------------------------------------

vpn serverを起動させる

$ sudo vpnserver start
The SoftEther VPN Server service has been started.

Let's get started by accessing to the following URL from your PC:

https://10.1.0.6:5555/
  or
https://10.1.0.6/

Note: IP address may vary. Specify your server's IP address.
A TLS certificate warning will appear because the server uses self signed certificate by default. That is natural. Continue with ignoring the TLS warning.

受信ポートを追加する

Azure側のネットワークファイヤーウォールにポート許可を追加します。

仮想マシン → ネットワーク → 受信ポートの規則を追加する

443ポートを許可します

優先度を見て、300がSSHになっているので、その下の310をつけます。この優先度に従って許可されていくので、優先度の高い位置に「拒否」が入っているとそこから先は評価されない事になります。

ここに追加されました。

SoftEtherサーバの設定

手元にあるWindowsクライアントマシンで、SoftEtherのサーバマネージャソフトを起動します。

管理者パスワードを入力せずに接続すると、初回起動時はパスワードを設定するように促されます。

初期設定

リモート悪アセスVPNサーバを稼働させます。

今回は特にIPSecは設定しません

VPN Azure クラウドは利用しません。

アクセスさせるためのユーザを追加します

SecureNAT設定しておきます

設定はデフォルトのままで大丈夫です

クライアントから接続試験

クライアントから接続試験を行います。

デフォルトゲートウェイがPacketixルータを向いているので、すでにAzure内への接続が可能な状態となっています。

C:\Users>ping post11.postgres.database.azure.com

post11.private.postgres.database.azure.com [10.1.1.4]に ping を送信しています 32 バイトのデータ:
10.1.1.4 からの応答: バイト数 =32 時間 =216ms TTL=63
10.1.1.4 からの応答: バイト数 =32 時間 =223ms TTL=63
10.1.1.4 からの応答: バイト数 =32 時間 =241ms TTL=63
10.1.1.4 からの応答: バイト数 =32 時間 =241ms TTL=63

10.1.1.4 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 216ms、最大 = 241ms、平均 = 230ms

Azure VMのUbuntuを動的IPに変更

関連付けの解除

現在のパブリックIPを削除

セキュリティグループ AzureUbuntu01-nsgは削除できなかった

ネットワークインターフェースの作成

同じリソースの中でIPアドレスを作成します

ネットワークインターフェースに新しいIPを割り当てる

ipconfig1をクリック

先ほど作成したipconfig1にパブリックIPアドレスを割り当てる

SoftEtherをDDNSで運用

SoftEtherのDDNSを利用して、動的パブリックIPでも運用可能にする

これで、PublicIPアドレス分の費用が浮きます。

C# FTPでメモリ上にファイル読み込み後件数をカウントする

ファイル書き込みが成功したか?

FTPでファイルを書き込んだ後、それが本当に成功しているのかが気になりました。

そこで、ファイルをアップロードした後に、再度そのファイルをメモリ上にダウンロードして、件数をカウントできるようにしました。

改行コード\nをLinqで数え、それに+1する事で行数としています。

コード

            string txtUser="UserName";
            stirng txtPass="Password";
            int LineCount=0;
            try
            {

                //WebClientオブジェクトを作成
                System.Net.WebClient wc = new System.Net.WebClient();
                //ログインユーザー名とパスワードを指定
                wc.Credentials = new System.Net.NetworkCredential(txtUser, txtPass);
                //FTPサーバーにアップロード
                wc.UploadFile(txtFullpath.Text + "filename", System.Environment.GetFolderPath(Environment.SpecialFolder.Personal) + @"\filename");

                //書き込んだファイルを読み込んで件数をカウントする
                byte[] newFileData = wc.DownloadData(txtFullpath.Text + "filename");
                string fileString = System.Text.Encoding.UTF8.GetString(newFileData);
                LineCount = fileString.ToList().Where(c => c.Equals('\n')).Count() + 1;

                //解放する
                wc.Dispose();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "ファイルアップロードエラー");
                return;
            }

RADIUS認証Wifi環境にユーザを追加

OUを作成

OUを作成して、明確にフォルダ別けできるようにしておきます。

サイネージ無線利用 ユーザ

サイネージ無線LAN利用 セキュリティグループ

を作成し、サイネージ無線利用ユーザは、サイネージ無線LAN利用グループのみ割り当てます。

ネットワークポリシーサーバにグループ割り当て

ネットワークポリシーサーバを起動します

ネットワークポリシー内のポリシー名 802.1x にサイネージ無線LAN利用グループを割り当てます。

これで、サイネージ無線利用ユーザは無線LAN接続の際にRADIUS認証できるようになります。

間違って削除されたりしないようにこのオブジェクトは保護されています。

OUが消せない原因

新しいオブジェクト作成時に

間違って削除されないようコンテナーを保護する

にチェックが入っているから

これだと削除できなくなる。

削除するための十分な特権がないか、または間違って削除されたりしないようにこのオブジェクトは保護されています。

削除方法

Active Directory ユーザとコンピュータ

拡張機能をチェック

OUのプロパティに、オブジェクトタブが表示されるようになり、

誤って削除されないようにオブジェクトを保護する

のチェックを外せるようになる

チェックを外せば削除可能

Azure上のVMにPacketixVPNサーバを構築し、Azure Database for PostgreSQLに接続する

Azure構成について

Azure Database for PostgreSQL

Azure Virtual Desktop

PacketixVPN Server( Virtual Machine)

やりたい事

Windowsクライアントパソコンから、Azure Virutal Desktopを利用してAzure Database for PostgreSQLに接続する事

WindowsクライアントからPacketixVPNを通して直接Azure Database for PostgreSQLに接続する事

このうち、WindowsClientから、Azure Virtual Desktop経由でAzure Database for PostgreSQLに接続する方法について、別ページで詳しく解説してあります。

このページで解説している事

上記ページにより、Azure Virtual DesktopからAzure Database for PostgreSQLに接続できる環境が構築されている事が前提です。

  1. Azure上に VMにてWindows10マシンを作成
  2. AzureVirtualDesktopからVMにリモートデスクトップ
  3. VMにPacketixVPNのインストール
  4. PacketixVPN経由でPostgreSQLに接続できる設定方法

Azure上にVMを構築する

Virtual Machinesをクリック

仮想マシンを作成

パブリック受信ポートを開けて、リモートデスクトップ接続を外部から受付できるように構築する事も可能ですが、外部から直接リモートデスクトップされるのは嫌なので、パブリック受信ポートはなしに設定します。

ネットワーク設定

Azure Virtual Desktopと同じサブネット上にVMを構築します。サブネットにはSubVMを設定します。

この性能で、1時間当たり0.0416USDほどの費用です。

月間稼働させて30ドル程度になります。

VM概要から、受信ポートの規則を追加

PacketixVPN接続用に受信ポートを開けておきます。Packetixの受信ポートは5569にしておきます。

この設定を行う事で、グローバルからこのポートにアクセスできるようになります。

Azure Virtual DesktopからVMに接続する

VMはインターネットグローバル上には公開しませんので、Azure Virtual Desktopを踏み台にして、VMにアクセスします。

構築したVMのサブネット内で取得したIPアドレスを確認します。

プライベートアドレスは10.1.0.5になっています。

パブリックIPアドレスも割り当てられていますが、ポート3389を開けていませんので、直接インターネットからリモートデスクトップ接続する事はできません。

Azure Virtual Desktopから、リモートデスクトップ接続を起動して、作成したVMにリモートデスクトップします。

VM作成時のユーザ名・パスワードで接続します。

PacketixVPNサーバのインストール

ここから先は、VM上での作業です。

PacketixVPNサーバをダウンロードします。Windows用です。

ダウンロードしたPacketix VPN Serverインストーラを実行します。

サーバを選択して次へ

このまま次へ、次へと進めていけば、インストール作業は完了です。

PacketixVPNサーバの設定

ローカルホストに接続します。

仮想HUBを作成し、設定します。

ユーザも合わせて作成します。

今回はVirtual NAT and Virutal DHCP Serverを設定しました。

Enable SerureNATを有効にして、SecureNAT Configration はデフォルトのまま利用しました。

WindowsClientにPacketixクライアントを設定

ここから先は、接続したいクライアントパソコンです。

仮想LANカードを作成しておき、Azure上のVMのグローバルIPアドレスを設定します。

PacketixVM11仮想マシンの概要ページに記載があります。

パブリックIPアドレスをPaketixVPNクライアントに設定します。

接続すると自動的にIPアドレスが割り振られます。

SecureNAT設定をしておいたので、DHCPで自動的にIPを取得し、この状態でAzure上のネットワークに入る事ができます。

クライアントからAzure Database for PostgreSQLにアクセスできるか確認

ping 試験をしてみます。

サーバ名は、Azure Database for PostgreSQLの概要ページに記載があります。

PacketixVPNクライアントで、接続したクライアントマシンからping試験です。

ping post11.postgres.database.azure.com

Replyがくるのを確認します。

この状態まできていたら、PacketixVPN経由でAzure Database for PostgreSQLに接続できる状態になっていますので、PgAdmin4でアクセスしてみます。

接続できました。

価格はこんな感じ

テストする時だけ稼働させて、あとは停止してたんですけど、2日間でこんな感じです。

Diskの占有でお金がとられるようなので、とりあえずもう少し安くなるUbuntuでテストする事にして、packetixvm11 で稼働させたWin10イメージVMは削除する事にしました。

Azure Virtual Desktopから、Azure Database for PostgreSQLに接続する-クラウド内完結サービスを目指す

Azure Virtual Desktopで仮想ホスト作成

Azureクラウド上で、クライアントもデータベースも完結できるシステムを目指して構築中です。

今回は、Azure上のVMホストからPostgreSQLに接続してみます。仮想ネットワークの作成方法に設定の肝があります。

仮想ネットワークを作成する

KasoNet11という仮想ネットワークを作成します。仮想ホストと、PostgreSQLデータベースをネットワーク上で接続できるようにするためには、まずは仮想ネットワークから作成しておく事をお勧めします。

Azure Virtual Desktop用のサブネット

ネットワークアドレス空間は: 10.1.0.0/16で作成

Azure Virtual Desktop用には 10.1.0.0/24でサブネットを作成します。

仮想ネットワークはこんな感じで作成しました。

AzureforPostgres用にサブネットを作成

ここが設定の要です。

上の手順で仮想ネットワークを作成し、デプロイが終わった後に、サブネットを追加します。ここでないとサブネットの委任が出てきません。

サブネットをサービスに委任が重要

Microsoft.DBforPostgreSQL/flexibleServers にサブネットを委任すること。 この委任は、Azure Database for PostgreSQL フレキシブル サーバーのみがそのサブネットを使用できることを意味します。 委任されたサブネットに他の Azure リソースの種類を含めることはできません。

Azure portal を使用した Azure Database for PostgreSQL – フレキシブル サーバーの仮想ネットワークの作成と管理

この委任設定をしたサブネットを作成しないと、Azure Virtual Desktopと同じネットワーク内にPostgreSQLサーバを配置する事ができません。

同じネットワーク内ではあるものの、サブネットを別ける必要があります。

Azure Virtual Desktopを作成

ホストプールを作成

同じリソースグループの中にホストプールを作成します。

仮想マシンの作成

ホストプールと一緒に仮想マシンを作成します。

サブネットは、仮想ネットワーク作成時にAzure Virtual Desktop用に準備した SubVMにしました。

また、参加するディレクトリは、 Azure Active Directory を選択します。

アプリケーショングループに権限の割り当て

同じAD内のユーザに、Azure Virtual Desktopへの接続権限を割り当てます

Azure Database for PostgreSQLを作成する

フレキシブルサーバを作成していきます。

開発用で作成します。開発用で作成すると、価格が安く作成可能です。

ネットワーク設定

プライベートアクセスを設定すると、自動的に委任されたサブネットまで表示されます。

全体的な設定はこんな感じです。

Azure Virtual Desktopにアクセス

専用のリモートデスクトップアプリにて、

URLで登録します。

https://rdweb.wvd.microsoft.com/api/arm/feeddiscovery

詳しくはこちらで

同じAD内のユーザでアクセスすると、接続できるAzure Virtual Desktopが表示されます。

以下の操作はAzure Virtual Desktop上で行います。

リモート接続できたら、Windows Power Shellを起動し、Postgresのサーバ名

※Azure Portal の Azure Database for PostgreSQLに記載があります。

に Pingをうって疎通確認を行います。

ping post11.postgres.database.azure.com

疎通が確認できたら、pgAdmin4をダウンロードインストールします。

pgAdmin4 上に Azure Database for PostgreSQLを登録します。

これで Azure Virtual Desktop から、Azure Database for PostgreSQLに接続できました。

余談 pgAdmin4のせいで接続できない!? ver6.5

最新バージョンの、 pgAdmin4 6.5を利用しよとしたのですが、

Crypt key is missing.

と表示されてしまい、接続できませんでした。

pgAdmin4 5.7を利用したところ問題なく接続できました。pgAdmin4の最新バージョンには何か設定が必要なのか?それともまだバグがあるのか分かりません。