This is an automated email from the ASF dual-hosted git repository.

quantranhong1999 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit c39529ee71cc74423c7e72b89c43fefcb3918de7
Author: Quan Tran <[email protected]>
AuthorDate: Wed Jul 29 10:20:56 2026 +0700

    [DOCUMENTATION] Webadmin: authenticate Postgres provisioning scripts
    
    Now Postgres app requires webadmin password by default, the script should 
have an optional webadmin password param.
---
 .../pages/distributed/benchmark/provision.sh       | 26 +++++++++++++++-------
 .../partials/benchmark/james-benchmark.adoc        |  8 ++++++-
 server/apps/postgres-app/performance-test.md       |  3 ++-
 server/apps/postgres-app/provision.sh              | 15 ++++++++++---
 4 files changed, 39 insertions(+), 13 deletions(-)

diff --git a/docs/modules/servers/pages/distributed/benchmark/provision.sh 
b/docs/modules/servers/pages/distributed/benchmark/provision.sh
index 0f3c86e8f5..b5d528f978 100755
--- a/docs/modules/servers/pages/distributed/benchmark/provision.sh
+++ b/docs/modules/servers/pages/distributed/benchmark/provision.sh
@@ -1,5 +1,7 @@
 #!/bin/bash
 
+set -eu
+
 export WEBADMIN_BASE_URL="http://localhost:8000";
 export SMTP_URL="localhost:25"
 export DOMAIN_NAME="domain.org"
@@ -7,32 +9,40 @@ export USERS_COUNT=10
 export DUMMY_MAILBOXES_COUNT=10
 export DUMMY_EMAILS_COUNT=100
 
+call_webadmin() {
+  if [ -n "${WEBADMIN_PASSWORD:-}" ]; then
+    curl --fail --header "Password: ${WEBADMIN_PASSWORD}" "$@"
+  else
+    curl --fail "$@"
+  fi
+}
+
 # Create domain
-curl -X PUT ${WEBADMIN_BASE_URL}/domains/${DOMAIN_NAME}
+call_webadmin -X PUT ${WEBADMIN_BASE_URL}/domains/${DOMAIN_NAME}
 
 for i in $(seq 1 $USERS_COUNT)
 do
   # Create user
    echo "Creating user $i"
    username=user${i}@$DOMAIN_NAME
-   curl -XPUT ${WEBADMIN_BASE_URL}/users/$username \
+   call_webadmin -XPUT ${WEBADMIN_BASE_URL}/users/$username \
      -d '{"password":"secret"}' \
      -H "Content-Type: application/json"
 
   # Create mailboxes for each user
    echo "Creating user $i mailboxes"
    # Create some basic mailboxes
-   curl -XPUT ${WEBADMIN_BASE_URL}/users/${username}/mailboxes/INBOX
-   curl -XPUT ${WEBADMIN_BASE_URL}/users/${username}/mailboxes/Outbox
-   curl -XPUT ${WEBADMIN_BASE_URL}/users/${username}/mailboxes/Sent
-   curl -XPUT ${WEBADMIN_BASE_URL}/users/${username}/mailboxes/Draft
-   curl -XPUT ${WEBADMIN_BASE_URL}/users/${username}/mailboxes/Trash
+   call_webadmin -XPUT ${WEBADMIN_BASE_URL}/users/${username}/mailboxes/INBOX
+   call_webadmin -XPUT ${WEBADMIN_BASE_URL}/users/${username}/mailboxes/Outbox
+   call_webadmin -XPUT ${WEBADMIN_BASE_URL}/users/${username}/mailboxes/Sent
+   call_webadmin -XPUT ${WEBADMIN_BASE_URL}/users/${username}/mailboxes/Draft
+   call_webadmin -XPUT ${WEBADMIN_BASE_URL}/users/${username}/mailboxes/Trash
 
    # Create some other dummy mailboxes
    for j in $(seq 1 $DUMMY_MAILBOXES_COUNT)
    do
      dummyMailbox=MAILBOX${j}
-     curl -XPUT ${WEBADMIN_BASE_URL}/users/${username}/mailboxes/$dummyMailbox
+     call_webadmin -XPUT 
${WEBADMIN_BASE_URL}/users/${username}/mailboxes/$dummyMailbox
    done
 done
 
diff --git a/docs/modules/servers/partials/benchmark/james-benchmark.adoc 
b/docs/modules/servers/partials/benchmark/james-benchmark.adoc
index 308281428c..39ac7dd1c8 100644
--- a/docs/modules/servers/partials/benchmark/james-benchmark.adoc
+++ b/docs/modules/servers/partials/benchmark/james-benchmark.adoc
@@ -56,6 +56,13 @@ chmod +x provision.sh
 sudo apt-get install postfix
 ----
 
+* Retrieve the generated WebAdmin password from the James startup logs and 
expose it to the provisioning script:
+----
+export WEBADMIN_PASSWORD="replace-with-generated-webadmin-password"
+----
+
+Omit this variable only when WebAdmin password authentication is explicitly 
disabled.
+
 * Run the provision script:
 ----
 ./provision.sh
@@ -98,4 +105,3 @@ A sample IMAP performance testing result 
(PlatformValidationSimulation):
 image::{james-imap-base-performance-picture}[]
 
 If you get a IMAP performance far below this base performance, you should 
consider investigating for performance issues.
-
diff --git a/server/apps/postgres-app/performance-test.md 
b/server/apps/postgres-app/performance-test.md
index 07fea62503..6229705d0b 100644
--- a/server/apps/postgres-app/performance-test.md
+++ b/server/apps/postgres-app/performance-test.md
@@ -5,7 +5,8 @@ To provision and benchmark an IMAP server backed by PostgreSQL, 
please have a lo
    - `mvn clean install -DskipTests -Dmaven.skip.doc=true`
    - `docker load -i ./target/jib-image.tar`
 2. Run the Postgres app: `docker compose up`
-3. Provision users and IMAP mailboxes + messages: `./provision.sh`
+3. Retrieve the generated WebAdmin password from the James startup logs, then 
provision users and IMAP mailboxes + messages:
+   `WEBADMIN_PASSWORD="replace-with-generated-webadmin-password" 
./provision.sh`
 4. Performance test IMAP server using 
[james-gatling](https://github.com/linagora/james-gatling)
    
    Sample IMAP simulation: `gatling:testOnly 
org.apache.james.gatling.simulation.imap.PlatformValidationSimulation`.
\ No newline at end of file
diff --git a/server/apps/postgres-app/provision.sh 
b/server/apps/postgres-app/provision.sh
index 9a62d68dfd..5d8d07f990 100755
--- a/server/apps/postgres-app/provision.sh
+++ b/server/apps/postgres-app/provision.sh
@@ -1,9 +1,19 @@
 #!/bin/bash
 
+set -eu
+
 export WEBADMIN_BASE_URL="http://localhost:8000";
 export DOMAIN_NAME="domain.org"
 export USERS_COUNT=1000
 
+call_webadmin() {
+  if [ -n "${WEBADMIN_PASSWORD:-}" ]; then
+    curl --fail --header "Password: ${WEBADMIN_PASSWORD}" "$@"
+  else
+    curl --fail "$@"
+  fi
+}
+
 echo "Start provisioning users."
 
 user_file="./imap-provision-conf/users.csv"
@@ -15,14 +25,14 @@ if [ -e "$user_file" ]; then
 fi
 
 # Create domain
-curl -X PUT ${WEBADMIN_BASE_URL}/domains/${DOMAIN_NAME}
+call_webadmin -X PUT ${WEBADMIN_BASE_URL}/domains/${DOMAIN_NAME}
 
 for i in $(seq 1 $USERS_COUNT)
 do
   # Create user
    echo "Creating user $i"
    username=user${i}@$DOMAIN_NAME
-   curl -XPUT ${WEBADMIN_BASE_URL}/users/$username \
+   call_webadmin -XPUT ${WEBADMIN_BASE_URL}/users/$username \
      -d '{"password":"secret"}' \
      -H "Content-Type: application/json"
 
@@ -37,4 +47,3 @@ echo "Start provisioning IMAP mailboxes and messages..."
 docker run --rm -it --name james-provisioning --network host -v 
./imap-provision-conf/provisioning.properties:/conf/provisioning.properties \
 -v $user_file:/conf/users.csv linagora/james-provisioning:latest
 echo "Finished provisioning IMAP mailboxes and messages."
-


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to