Moving from desktop Outlook to web hosting email or private Linux IMAP servers? Here is how to batch upload PST archives directly to cPanel and IMAP accounts.
On This Page (9 sections) ▾
- 1. The Technical Bottleneck: Roundcube PHP Upload Limits & Horde Deprecation
- 2. IMAP Special-Use Folders & Namespace Mapping (RFC 6154)
- 3. Why Native Outlook-to-IMAP Drag-and-Drop Fails
- 4. Method 1: Automated Direct Upload with Prism PST Converter Tool (Recommended)
- 5. Batch Domain Migration via CSV Spreadsheet
- 6. Method 2: Command-Line Migration via Python / IMAP Protocol
- 7. Common cPanel & Webmail IMAP Server Configurations
- 8. Frequently Asked Questions
- 9. Summary & Next Steps
⚡ Quick Direct Answer: How to Import PST into cPanel & Roundcube
cPanel Roundcube cannot parse binary .pst files directly due to PHP 50MB upload limits.
- Automated Server Ingestion: Use Prism PST Converter Tool to stream PST messages directly to cPanel IMAP (Port 993 SSL) with automatic folder creation and batch CSV support.
- Single Mailbox Server Tuning: If managing a dedicated VPS or single mailbox with custom Dovecot timeouts, see our companion guide: How to Upload PST to cPanel Webmail and IMAP.
- Desktop Outlook Method: Add your cPanel IMAP account to Outlook, open the PST file, and drag folders to the IMAP mailbox.
Migrating an organization's email archives away from desktop Microsoft Outlook to cPanel, Roundcube, Plesk, or Linux IMAP servers involves significant protocol and sizing challenges.
Standard webmail interfaces enforce server-side PHP upload limits—frequently capped between 25MB and 50MB. Attempting to upload a large PST file directly through webmail results in HTTP 413 (Payload Too Large) or HTTP 504 Gateway Timeout errors.
┌────────────────────────────────────────────────────────┐
│ PST TO cPANEL / IMAP STREAMING ARCHITECTURE │
├────────────────────────────────────────────────────────┤
│ 📁 LOCAL DISK: Outlook PST / OST Archives (50 GB+) │
│ │ │
│ ▼ │
│ ⚡ PRISM MULTI-SOCKET IMAP4rev1 STREAMING ENGINE │
│ - TLS 1.3 Encrypted Sockets (Port 993 / 143) │
│ - Chunked RFC 822 Append Commands │
│ - Adaptive Throttle & Auto-Reconnect Keep-Alive │
│ │ │
│ ▼ │
│ ☁️ TARGET IMAP SERVER / WEBMAIL CLUSTER │
│ ├── cPanel / Webmail (Dovecot / Courier) │
│ ├── Plesk Linux Server │
│ ├── Roundcube Webmail Interface │
│ └── Zimbra / Zoho / Fastmail Custom IMAP │
└────────────────────────────────────────────────────────┘Using desktop Outlook to drag and drop thousands of emails into an IMAP account can result in dropped connections, socket timeout errors, and duplicate message delivery.
Here is an architectural breakdown of Roundcube webmail limits, RFC 6154 namespace handling, and batch migration workflows using automated CSV staging or Python scripts.
The Technical Bottleneck: Roundcube PHP Upload Limits & Horde Deprecation
Why doesn't Roundcube allow importing a .pst file directly through the browser?
1. Webmail PHP Stack Constraints
Roundcube is a PHP web application running under Apache or LiteSpeed. It does not possess a MAPI binary parser. While Roundcube features a small "Import messages" button under folder settings, it accepts only single .eml or .zip files containing raw RFC 822 messages.
Beyond that, uploads are bound by web server limits in php.ini:
upload_max_filesize = 50Mpost_max_size = 50Mmax_execution_time = 300
Attempting to upload a multi-gigabyte mailbox crashes the PHP process worker with memory exhaustion (Allowed memory size of bytes exhausted).
2. Horde Webmail Deprecation in Modern cPanel
Historically, cPanel included Horde Webmail, which offered basic calendaring and contact synchronization. Beginning with cPanel version 108, Horde was formally removed due to PHP 8.x incompatibility. All modern cPanel instances rely exclusively on Roundcube for email and Dovecot's underlying CalDAV/CardDAV storage for calendars and contacts.
IMAP Special-Use Folders & Namespace Mapping (RFC 6154)
One of the most frequent post-migration complaints is that sent messages or trash items do not appear in Roundcube's default folders.
This occurs because Outlook uses localized folder names (e.g., Sent Items, Deleted Items, Drafts), whereas Linux IMAP servers define special-use attributes under RFC 6154:
| Outlook MAPI Folder Name | Target IMAP Special-Use Attribute | Roundcube Display Folder |
|---|---|---|
Inbox | \Inbox | INBOX |
Sent Items | \Sent | Sent (or INBOX.Sent) |
Deleted Items | \Trash | Trash (or INBOX.Trash) |
Drafts | \Drafts | Drafts (or INBOX.Drafts) |
Junk Email | \Junk | Junk (or Spam) |
The Prism PST to IMAP engine inspects the server's NAMESPACE capability during the initial TLS handshake. Whether your server enforces an empty prefix (/INBOX/Subfolder) or a prefixed personal namespace (INBOX.Subfolder), the engine automatically routes items to the correct location.
Why Native Outlook-to-IMAP Drag-and-Drop Fails
Every single time someone tries a native drag-and-drop migration inside Outlook, the same four issues destroy the timeline:
- IMAP APPEND Command Saturation: Outlook tries pushing everything through one single TCP socket. A tiny network burp kills the connection (
0x800CCC0E/0x800CCC0F), dumping the entire queue. - Duplicate Message Injection: Lack of state tracking means dropped sockets force the client to re-upload everything it already sent.
- MIME Transport Header Truncation: Raw MAPI properties get mangled during sync, stripping critical authentication headers like
Return-Pathand DKIM signatures. - Server-Side Rate Limiting (IMAP Lockouts): Dovecot strict configs (
mail_max_userip_connections = 10) drop the hammer immediately. Fail2ban or CSF bans the migration IP address within minutes.
Skip the manual headache. You need chunked multi-threading and an adaptive client.
Method 1: Automated Direct Upload with Prism PST Converter Tool (Recommended)
Bypass Microsoft Outlook entirely by firing up the Prism PST Converter Tool to push PST and OST archives straight into cPanel, Roundcube, Zoho, Zimbra, or custom Linux IMAP setups.
Launch the utility on your workstation. Hit Add Files or Add Folder to load the local PST archives right into the parser index.
Configure the destination IMAP parameters by typing in your server hostname (mail.yourdomain.com or imap.secureserver.net), selecting Port 993 (SSL/TLS) or Port 143 (STARTTLS), and punching in the destination email credentials.
Set up folder hierarchies and filtering rules. Point the tool to drop items directly into the /INBOX root or build a custom directory like /Archived_Outlook_2026/. Apply date filters or exclude Junk and Trash directories to preserve server storage quotas.
Dial in worker threads. We recommend keeping worker counts between 3 and 5 for cPanel or Dovecot environments to keep the server firewall quiet.
Click Start Upload. The real-time progress indicators track live transfer progress and folder completion.
Free Trial Evaluation: The demo edition migrates up to 50 items per folder, allowing administrators to verify server connectivity, authentication, folder mapping, and batch CSV processing before licensing.
Batch Domain Migration via CSV Spreadsheet
Handling dozens of employee mailboxes during a company-wide migration to cPanel? Prepare a simple CSV manifest file:
PstFilePath,ImapServer,Port,Username,Password,TargetFolder,UseSSL
D:\PSTs\john.doe.pst,mail.company.com,993,john.doe@company.com,Pass123!45,INBOX,true
D:\PSTs\sarah.j.pst,mail.company.com,993,sarah.jenkins@company.com,Pass123!45,INBOX,true
D:\PSTs\finance.pst,mail.company.com,993,finance@company.com,Pass123!45,INBOX,trueIn the Prism engine, select Batch CSV Import, select your spreadsheet, and hit Execute Batch. The engine connects to each mailbox sequentially, creating remote folders, streaming messages, and outputting an item-by-item verification log.
Method 2: Command-Line Migration via Python / IMAP Protocol
Automated server staging setups often demand a scripted approach. Use this production-ready Python script built on top of imaplib with full TLS support:
import imaplib
import email
from email.policy import default
import time
IMAP_SERVER = "mail.yourdomain.com"
IMAP_PORT = 993
USERNAME = "user@yourdomain.com"
PASSWORD = "SecureAppPassword2026!"
# Establish secure TLS socket
mail = imaplib.IMAP4_SSL(IMAP_SERVER, IMAP_PORT)
mail.login(USERNAME, PASSWORD)
print("✅ Successfully authenticated to IMAP server.")
# Ensure target folder exists
target_folder = "INBOX.Migrated_Outlook"
status, _ = mail.create(target_folder)
# Sample RFC 822 raw message payload (extracted from PST)
raw_rfc822_message = b"""From: sender@client.com
To: user@yourdomain.com
Subject: Project Deliverable Milestone
Date: Mon, 17 Aug 2026 10:15:00 +0000
Content-Type: text/plain; charset="utf-8"
This is a migrated message from Outlook PST storage.
"""
# Append message to IMAP mailbox with original timestamp
date_time = imaplib.Time2Internaldate(time.time())
mail.append(target_folder, "\\Seen", date_time, raw_rfc822_message)
print(f"✅ Message successfully appended to {target_folder}")
mail.logout()Always pass the exact INTERNALDATE parameter matching the original received timestamp when pushing raw RFC 822 payloads via APPEND. Otherwise, webmail clients like Roundcube will stamp every single imported message with today's date.
Common cPanel & Webmail IMAP Server Configurations
| Email Service / Host | IMAP Server Hostname | Port | Encryption |
|---|---|---|---|
| cPanel Shared / Dedicated | mail.yourdomain.com | 993 | SSL / TLS |
| Roundcube / Dovecot Linux | mail.yourdomain.com | 993 | SSL / TLS |
| Plesk Web Server | mail.yourdomain.com | 993 | SSL / TLS |
| Zimbra Collaboration Suite | mail.company.com | 993 | SSL / TLS |
| Zoho Workplace IMAP | imappro.zoho.com | 993 | SSL / TLS |
| Fastmail | imap.fastmail.com | 993 | SSL / TLS |
| Yahoo Small Business Mail | imap.mail.yahoo.com | 993 | SSL / TLS |
Frequently Asked Questions
What happens if the internet connection drops during a 50GB upload?
The Prism engine packs built-in exponential backoff routines and automatic session resumption. It re-establishes the IMAP socket and picks up right where it left off without duplicating previously synced items.
Can I migrate password-protected or orphaned PST files to cPanel?
Yes. Standard Outlook PST password protection uses compressible CRC obfuscation rather than cryptographic AES encryption; the parser bypasses this legacy lock directly without requiring the lost password.
Will all attachments and embedded images transfer intact?
Every single message payload gets converted into a clean RFC 822 MIME stream that retains all PDF files, DOCX documents, ZIP folders, and inline graphics.
Will messages maintain their unread or flagged status after upload?
Yes. IMAP flags such as \Seen (read), \Answered (replied), and \Flagged (starred) are preserved during the APPEND transaction so your message workflow remains identical in Roundcube.
How can I avoid being blocked by cPanel's Fail2ban during bulk migration?
Ensure that your cPanel email password is typed accurately before beginning. Multiple failed login attempts will trigger Fail2ban IP bans. If possible, temporarily whitelist your migration IP address in WHM under ConfigServer Security & Firewall (CSF).
Summary & Next Steps
Migrating bulky Outlook PST archives into cPanel, Roundcube, or private IMAP targets can be performed efficiently without relying on freezing desktop clients or dealing with dropped connections.
- Deploy the Prism PST Converter Tool for direct multi-threaded migrations driven by automated CSV batching.
- Need to pull data out of live IMAP mailboxes back into local storage? Check out our IMAP Backup Tool.
Related Guides: Moving cPanel data to Microsoft 365? See How to Migrate cPanel Webmail to Microsoft 365 Directly. For backing up IMAP mailboxes locally, follow How to Backup IMAP Server Emails to Local PST & MBOX.
PST Converter Tool
Export Outlook PST files to multiple formats — PDF, MBOX, EML, Gmail, Office 365, IMAP — without needing Microsoft Outlook installed. Handles large 50GB+ files smoothly. Fast on Windows 11 and Mac (M1–M4).