Thanks to visit codestin.com
Credit goes to github.com

Skip to content

OST2GO - Version 2.1.1 - A unified Node.js application for converting, extracting, and managing Microsoft Outlook OST and PST files with UTF-8 support.

License

Notifications You must be signed in to change notification settings

SkyLostTR/OST2GO

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

12 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ OST2GO - Logo

Complete OST/PST Management Toolkit
Convert, extract, and manage Microsoft Outlook OST files with ease

Version License Node NPM NPM Downloads Package Size GitHub Stars GitHub Issues Platform Build Status GitHub Forks Contributors Last Commit Code Size

Created by SkyLostTR (@Keeftraum)


Version 2.1.0 - A unified Node.js application for converting, extracting, and managing Microsoft Outlook OST and PST files with UTF-8 support.

πŸ“¦ Installation

Option 1: npm (Recommended)

# Install globally from npm
npm install -g ost2go

# Verify installation
ost2go --version

Option 2: Standalone Binaries (No Node.js Required)

Download pre-built binaries from Releases:

  • Windows: ost2go-win.exe
  • Linux: ost2go-linux
  • macOS: ost2go-macos
# Windows
.\ost2go-win.exe --version

# Linux/macOS
chmod +x ost2go-linux
./ost2go-linux --version

Option 3: From Source

# Clone repository
git clone https://github.com/SkyLostTR/OST2GO.git
cd OST2GO

# Install dependencies
npm install

# Install globally
npm install -g .

Option 4: GitHub Packages

# Configure registry
echo "@skylosttr:registry=https://npm.pkg.github.com" >> .npmrc

# Install
npm install -g @skylosttr/ost2go

🎯 What's New in Version 2.0

βœ… Unified Command Interface

All functionality is now accessible through a single ost2go command with intuitive subcommands:

  • ost2go convert - Convert OST to PST (real & legacy modes)
  • ost2go extract - Extract emails to EML, MBOX, and JSON
  • ost2go validate - Validate PST file integrity
  • ost2go info - Display file information

πŸš€ Quick Installation

npm install -g .
ost2go --help

Important Updates - Version 2.0

⚠️ Issue Resolution: Email Client Crashes

Problem: Previous versions created PST files that crashed Outlook and Thunderbird during import.

Root Cause: The original implementation was too simplistic and didn't properly handle:

  • PST header structure and format identifiers
  • Block alignment and data structure compliance
  • CRC checksums and file integrity validation

Solution: Completely rewritten converter with:

  • βœ… Proper PST header generation with correct format identifiers
  • βœ… Block-level data processing for PST compliance
  • βœ… CRC32 checksum calculation for file integrity
  • βœ… Advanced error handling and validation
  • βœ… UTF-8 encoding preservation for international content

⚠️ Critical Compatibility Notice - READ BEFORE USE

This is an educational/research proof-of-concept with MAJOR limitations:

❌ KNOWN ISSUES - Current Version:

  • Generated PST files are NOT readable by standard PST readers (Outlook, XstReader, etc.)
  • Internal structure conversion is incomplete - only header is modified
  • OST database structures remain unchanged causing parse errors in PST readers
  • This tool performs surface-level conversion only

πŸ”§ Technical Explanation:

OST files use proprietary Microsoft Exchange-locked database structures that are fundamentally different from PST format. True conversion requires:

  • Complete B-tree database restructuring
  • Node reference table rebuilding
  • Block allocation table conversion
  • Encryption/compression handling
  • Exchange-specific metadata removal

Our tool currently only:

  • βœ… Changes file header from OST to PST format
  • βœ… Processes data in chunks with basic block alignment
  • ❌ Does NOT convert internal database structures
  • ❌ Does NOT rebuild B-tree indexes
  • ❌ Does NOT handle Exchange-specific encryption

⚠️ For Actual OST to PST Conversion - Use These Instead:

  1. Microsoft Outlook Built-in Tools (RECOMMENDED):

    File β†’ Open & Export β†’ Import/Export β†’ Export to a file β†’ Outlook Data File (.pst)
    
  2. Microsoft Official Utilities:

    • PST Capture tool
    • Exchange Admin Center export features
    • PowerShell Export-Mailbox cmdlets
  3. Commercial Solutions:

    • Aspose.Email for .NET
    • Stellar OST to PST Converter
    • SysTools OST Recovery

πŸ“š Educational Value:

This project demonstrates:

  • PST/OST file format structure basics
  • Node.js file processing techniques
  • CLI application development patterns
  • Progress tracking and error handling

πŸ“– For detailed technical explanation of why this doesn't work, see TECHNICAL-LIMITATIONS.md

✨ Features

  • πŸ”„ OST to PST Conversion: Convert Outlook OST files to PST format with improved compatibility
  • 🌍 UTF-8 Support: Ensures proper encoding for international characters
  • πŸ“Š Progress Tracking: Real-time progress display during conversion
  • βœ… File Validation: Validates input and output files with integrity checks
  • πŸ’» Command Line Interface: Easy-to-use CLI with comprehensive options
  • πŸ› οΈ Advanced Error Handling: Detailed error reporting and troubleshooting
  • πŸ“ PST Format Compliance: Proper header structure and block alignment
  • οΏ½ Standalone Binaries: No Node.js required for end users
  • οΏ½ Multiple Distribution Channels: npm, GitHub Packages, and standalone binaries

πŸ’‘ Usage Examples

πŸ“§ Extract Emails (Recommended Method)

# Extract emails to EML, MBOX, and JSON formats
ost2go extract -i input.ost -o my-emails --max 100

# Extract with verbose output
ost2go extract -i input.ost -o my-emails --max 500 --verbose

πŸ”„ Convert OST to PST

# RECOMMENDED: Real converter (extracts actual emails)
ost2go convert -i input.ost -o output.pst --real --max-emails 100

# Legacy converter (educational only - output not readable)
ost2go convert -i input.ost -o output.pst --force

βœ… Validate PST Files

# Validate a PST file
ost2go validate -i output.pst

# Validate with detailed output
ost2go validate -i output.pst --verbose

ℹ️ Get File Information

# Display OST file information
ost2go info -i input.ost

πŸ“‹ Command Reference

Command Description Example
ost2go convert πŸ”„ Convert OST to PST ost2go convert -i file.ost -o file.pst --real
ost2go extract πŸ“§ Extract to EML/MBOX/JSON ost2go extract -i file.ost -o output --max 100
ost2go validate βœ… Validate PST integrity ost2go validate -i file.pst --verbose
ost2go info ℹ️ Show file information ost2go info -i file.ost

πŸ“š For comprehensive documentation, see OST2GO_GUIDE.md

Command Line Options

Convert Command

  • -i, --input <path>: Input OST file path (required)
  • -o, --output <path>: Output PST file path (required)
  • --utf8: Ensure UTF-8 encoding support (default: true)
  • --overwrite: Overwrite output file if it exists (default: false)
  • --force: Skip format compatibility warnings (default: false)
  • --real: Use real converter to extract actual emails (recommended)
  • --max-emails <number>: Maximum number of emails to convert (default: 100)

Validate Command

  • -i, --input <path>: PST file path to validate (required)
  • --verbose: Show detailed validation information

Info Command

  • -i, --input <path>: Input OST file path (required)

πŸ’‘ Examples

# Convert a typical OST file (with compatibility warning)
node src/index.js convert -i "C:\Users\John\Documents\Outlook Files\archive.ost" -o "C:\Users\John\Documents\Outlook Files\archive.pst"

# Get information about an OST file
node src/index.js info -i "C:\Users\John\Documents\Outlook Files\archive.ost"

# Convert with overwrite enabled and skip warnings
node src/index.js convert -i "./input.ost" -o "./output.pst" --overwrite --force

# Test conversion with a small file first
node src/index.js convert -i "small_test.ost" -o "test_output.pst" --force

🚨 Troubleshooting Email Client Crashes

If Outlook/Thunderbird Still Crashes:

  1. Try a smaller test file first:

    # Create a test with a portion of your OST
    node src/index.js convert -i "small_sample.ost" -o "test.pst" --force
  2. 🏒 Use Microsoft's official tools:

    • Open Outlook
    • Go to File β†’ Open & Export β†’ Import/Export
    • Choose "Export to a file" β†’ "Outlook Data File (.pst)"
  3. Check file integrity:

    # Get file information to verify the conversion
    node src/index.js info -i "converted_file.pst"
  4. Import gradually:

    • Import only a few folders at a time
    • Check for specific problematic emails or attachments

πŸ› οΈ Common Issues and Solutions:

Issue Solution
PST file too large Split large OST files before conversion
Encoding problems Ensure --utf8 flag is enabled (default)
Corrupted source OST Use scanpst.exe to repair the OST file first
Memory errors Close other applications, use smaller chunks
Import hangs Try importing specific folders instead of entire PST

πŸ› οΈ Development

πŸ§ͺ Running Tests

npm test

πŸ”„ Development Mode with Auto-restart

npm run dev

πŸ”§ Technical Details

πŸ“ OST vs PST Format

  • OST files: Offline Storage Table files used by Outlook for cached email data
  • PST files: Personal Storage Table files used for archiving and backup
  • Both formats share similar internal structure but have different headers and metadata

🌍 UTF-8 Support

The converter ensures that text content within emails maintains proper UTF-8 encoding, which is essential for:

  • International characters (Γ‘, Γ©, Γ­, Γ³, ΓΊ, Γ±, etc.)
  • Emoji and special symbols
  • Multi-language email content

⚑ File Processing

The converter processes files in chunks to handle large OST files efficiently:

  • Default chunk size: 1MB
  • Progress tracking for large files
  • Memory-efficient streaming

⚠️ Important Notes

🚨 Disclaimer

This is a proof-of-concept implementation for educational purposes. The actual OST/PST file formats are proprietary Microsoft formats with complex internal structures. For production use, consider:

  1. 🏒 Microsoft's official tools: Use Outlook's built-in import/export functionality
  2. πŸ’Ό Professional libraries: Consider commercial solutions like Aspose.Email or similar
  3. πŸ–₯️ Exchange Server: Use server-side conversion tools when available

πŸ“‹ Limitations

  • This implementation provides a basic framework but may not handle all OST format variations
  • Complex email attachments, calendar items, and advanced features may require additional processing
  • Microsoft's PST format has evolved over different Outlook versions (97, 2003, 2007+)

βš–οΈ Legal Considerations

  • Ensure you have proper rights to convert OST files
  • Respect data privacy and corporate policies
  • Consider encryption and security requirements

File Structure

ost-to-pst-converter/
β”œβ”€β”€ πŸ“ src/
β”‚   β”œβ”€β”€ πŸ“„ index.js                 # Main CLI application
β”‚   └── πŸ“ converter/
β”‚       └── πŸ“„ OstToPstConverter.js # Core conversion logic
β”œβ”€β”€ πŸ“ test/
β”‚   └── πŸ“„ test.js                  # Test suite
β”œβ”€β”€ πŸ“„ package.json                 # Project dependencies and scripts
└── πŸ“„ README.md                   # This file

🀝 Contributing

  1. 🍴 Fork the repository
  2. 🌿 Create a feature branch
  3. ✏️ Make your changes
  4. πŸ§ͺ Run tests: npm test
  5. πŸ“€ Submit a pull request

License

This project is licensed under a proprietary license - see the LICENSE file for details.

πŸ†˜ Support

For issues and questions:

  1. πŸ” Check the troubleshooting section below
  2. πŸ§ͺ Review the test results with npm test
  3. πŸ”§ Ensure your Node.js version is 16+

πŸ”§ Troubleshooting

🚨 Common Issues

  1. "Input file does not exist"

    • Verify the file path is correct
    • Use absolute paths when possible
    • Check file permissions
  2. "Output file already exists"

    • Use the --overwrite flag to replace existing files
    • Choose a different output path
  3. "Conversion failed"

    • Ensure the input file is a valid OST file
    • Check available disk space
    • Verify file is not corrupted or locked by Outlook
  4. "UTF-8 encoding issues"

    • The converter attempts to handle encoding automatically
    • For complex encoding issues, consider professional tools

⚑ Performance Tips

  • Close Outlook before converting OST files
  • Ensure sufficient disk space (PST files can be similar size to OST)
  • Use SSD storage for better performance with large files
  • Consider converting large files in smaller segments if needed

License

This project is licensed under a proprietary license - see the LICENSE file for details.

Author

OST2GO is created and maintained by SkyLostTR (@Keeftraum)

Repository


OST2GO v2.0.0 - Complete OST/PST Management Toolkit
Built with ❀️ by SkyLostTR (@Keeftraum)

About

OST2GO - Version 2.1.1 - A unified Node.js application for converting, extracting, and managing Microsoft Outlook OST and PST files with UTF-8 support.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

  •  

Packages