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]
